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操作xml文件详细介绍
Jun 09 Python
python对url格式解析的方法
May 13 Python
浅谈Python的文件类型
May 30 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
django基于restframework的CBV封装详解
Aug 08 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
pyinstaller打包找不到文件的问题解决
Apr 15 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
Feb 02 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
apache rewrite_module模块使用教程
2008/01/10 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
php-msf源码详解
2017/12/25 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
python根据出生年份简单计算生肖的方法
2015/03/27 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
中海讯通笔试题
2015/09/15 面试题
编辑个人求职信范文
2013/09/21 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
年底个人总结范文
2015/03/10 职场文书
2015年科协工作总结
2015/05/19 职场文书
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript