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之玩转字符串(2)
Sep 14 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
TensorFlow实现简单卷积神经网络
May 24 Python
python 多个参数不为空校验方法
Feb 14 Python
Python使用指定端口进行http请求的例子
Jul 25 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
浅谈Python 函数式编程
Jun 20 Python
Python threading模块condition原理及运行流程详解
Oct 05 Python
Python word文本自动化操作实现方法解析
Nov 05 Python
python 使用OpenCV进行简单的人像分割与合成
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
php基础知识:类与对象(1)
2006/12/13 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
pygame学习笔记(4):声音控制
2015/04/15 Python
Python检测QQ在线状态的方法
2015/05/09 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
python绘制汉诺塔
2021/03/01 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
升职自荐书范文
2013/11/28 职场文书
会议活动邀请函
2014/01/27 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
自动化毕业生专业自荐书范文
2014/02/04 职场文书
公证书标准格式
2014/04/10 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
2016年公司新年寄语
2015/08/17 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android