python 使用建议与技巧分享(四)


Posted in Python onAugust 18, 2020

这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。

1 如何打印更易读的类

不推荐方式

class Point(object):
  def __init__(self, x, y):
    self.x = x
    self.y = y


p = Point(3, 4)

print p
# <__main__.Point object at 0x0000000001E1B9E8>

推荐方式

class Point(object):
  def __init__(self, x, y):
    self.x = x
    self.y = y

  def __repr__(self):
    return 'Point({self.x}, {self.y})'.format(self=self)


p = Point(3, 4)

print p
# Point(3, 4)

前一种方式打印的类不易读,不能获取更多的信息。通过类的__repr__方法可以将类打印得更易读。或者不定义__repr__方法,直接使用下面方式打印:

print p.__dict__
# {'y': 4, 'x': 3}

使用__dict__方法,将类以字典形式打印出来,也比较易读。

2 如何将类打印成json字符串

import json


class User(object):
  def __init__(self, name, id):
    self.name = name
    self.id = id


u = User('user1', 1)
print json.dumps(u.__dict__, indent=4)

'''
{
  "name": "user1",
  "id": 1
}
'''

通过json模块的dumps方法,可以轻易将类打印成json字符串。

3 如何排序类列表

class User:
  def __init__(self, name, key):
    self.name = name
    self.key = key

  def __repr__(self):
    return 'User({self.name}, {self.key})'.format(self=self)


user_list = [
  User('user1', 3),
  User('user2', 2),
  User('user3', 1),
]

print sorted(user_list, key=lambda user: user.key)
# [User(user3, 1), User(user2, 2), User(user1, 3)]
print sorted(user_list, key=lambda user: user.name)
# [User(user1, 3), User(user2, 2), User(user3, 1)]

这里排序的方法和字典排序类似,第一种是按user的key升序排序,第二种是按user的name升序排序。其实还支持名字相同,再按key进行排序,如下:

user_list = [
  User('user1', 3),
  User('user1', 2),
  User('user1', 1),
]

print sorted(user_list, key=lambda user: (user.name, user.key))
# [User(user1, 1), User(user1, 2), User(user1, 3)]

以上就是python 使用建议与技巧分享(四)的详细内容,更多关于python 建议与技巧的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
python2.7实现FTP文件下载功能
Apr 15 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
Python 硬币兑换问题
Jul 29 Python
解决Python列表字符不区分大小写的问题
Dec 19 Python
python中的split()函数和os.path.split()函数使用详解
Dec 21 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
Python调用shell命令常用方法(4种)
May 11 Python
python 利用zmail库发送邮件
Sep 11 Python
Python基于execjs运行js过程解析
Nov 27 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
Python正则re模块使用步骤及原理解析
Aug 18 #Python
python使用建议技巧分享(三)
Aug 18 #Python
python3跳出一个循环的实例操作
Aug 18 #Python
OpenCV图片漫画效果的实现示例
Aug 18 #Python
Django DRF APIView源码运行流程详解
Aug 17 #Python
Django CBV模型源码运行流程详解
Aug 17 #Python
无惧面试,带你搞懂python 装饰器
Aug 17 #Python
You might like
php+javascript的日历控件
2009/11/19 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
Python中replace方法实例分析
2014/08/20 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
培训演讲稿范文
2014/01/12 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
勤俭节约倡议书
2014/04/14 职场文书
保护地球的宣传语
2015/07/13 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL