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的gevent框架下执行异步的Solr查询的教程
Apr 16 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
在Python文件中指定Python解释器的方法
Feb 18 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
python批量处理txt文件的实例代码
Jan 13 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
Python实现名片管理系统
Feb 14 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
python使用建议与技巧分享(一)
Aug 17 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 Python
python神经网络ResNet50模型
May 06 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
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
javascript 短路法代码精简
2009/08/20 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
浅谈JavaScript的push(),pop(),concat()方法
2016/06/03 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
python机器人行走步数问题的解决
2018/01/29 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
ASP.NET Core中的配置详解
2021/02/05 Python
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
幼儿园六一儿童节活动方案
2014/08/26 职场文书
CAD实训总结范文
2015/08/03 职场文书
法制主题班会教案
2015/08/13 职场文书
聘用合同范本
2015/09/21 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android
Java完整实现记事本代码
2022/06/16 Java/Android