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 14 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
Python基础学习之常见的内建函数整理
Sep 06 Python
Python 实现字符串中指定位置插入一个字符
May 02 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
windows下搭建python scrapy爬虫框架步骤
Dec 23 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
在Keras中实现保存和加载权重及模型结构
Jun 15 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
python excel多行合并的方法
Dec 09 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
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
跨浏览器的事件对象介绍
2012/06/27 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
jquery replace方法去空格
2017/05/08 jQuery
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
python基础教程之循环介绍
2014/08/29 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
python实现智能语音天气预报
2019/12/02 Python
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
音乐表演专业毕业生求职信
2013/10/14 职场文书
高中的自我鉴定
2013/12/16 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
学校消防安全责任书
2014/07/23 职场文书
管理工程专业求职信
2014/08/10 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
接待员岗位职责范本
2015/04/15 职场文书
秋季运动会加油词
2015/07/18 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
导游词之太原天龙山
2020/01/02 职场文书
python如何做代码性能分析
2021/04/26 Python
如何在C++中调用Python
2021/05/21 Python
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技