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 相关文章推荐
简洁的十分钟Python入门教程
Apr 03 Python
详解Python中的各种函数的使用
May 24 Python
Pythont特殊语法filter,map,reduce,apply使用方法
Feb 27 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
Django-migrate报错问题解决方案
Apr 21 Python
python 深度学习中的4种激活函数
Sep 18 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
php 清除网页病毒的方法
2008/12/05 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
Angular实现响应式表单
2017/08/04 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
python 判断网络连通的实现方法
2018/04/22 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
python面试题小结附答案实例代码
2019/04/11 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
python plotly画柱状图代码实例
2019/12/13 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
python中怎么表示空值
2020/06/19 Python
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
敬老院活动总结
2014/04/28 职场文书
低碳环保口号
2014/06/12 职场文书
保送生自荐信
2015/03/06 职场文书
爱国主义影片观后感
2015/06/18 职场文书
毕业典礼主持词
2015/06/29 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript