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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
Python判断变量是否已经定义的方法
Aug 18 Python
Python实现CET查分的方法
Mar 10 Python
python抽象基类用法实例分析
Jun 04 Python
pandas object格式转float64格式的方法
Apr 10 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
Python对象的属性访问过程详解
Mar 05 Python
python七种方法判断字符串是否包含子串
Aug 18 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
Django后端按照日期查询的方法教程
Feb 28 Python
聊一聊python常用的编程模块
May 14 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 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
Memcache 在PHP中的使用技巧
2010/02/08 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Python日志模块logging简介
2015/04/13 Python
python实现输入数字的连续加减方法
2018/06/22 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Django的性能优化实现解析
2019/07/30 Python
利用python生成照片墙的示例代码
2020/04/09 Python
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
华为慧通笔试题
2016/04/22 面试题
汽车运用工程毕业生自荐信
2013/10/29 职场文书
业务部主管岗位职责
2014/01/29 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
2015年企业新年寄语
2014/12/08 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
党员转正意见怎么写
2015/06/03 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android