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中SQLAlchemy排序的一个坑
Feb 24 Python
python数据结构之列表和元组的详解
Sep 23 Python
python爬取各类文档方法归类汇总
Mar 22 Python
python集合是否可变总结
Jun 20 Python
pybind11和numpy进行交互的方法
Jul 04 Python
Python PO设计模式的具体使用
Aug 16 Python
Python socket 套接字实现通信详解
Aug 27 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
Python %r和%s区别代码实例解析
Apr 03 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
pytorch中index_select()的用法详解
Jan 06 Python
Python jiaba库的使用详解
Nov 23 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 批量更新网页内容实现代码
2010/01/05 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Python中optparser库用法实例详解
2018/01/26 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
python属于解释语言吗
2020/06/11 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
python os.listdir()乱码解决方案
2021/01/31 Python
美国在线购物频道:Shop LC
2019/04/21 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
幼儿运动会邀请函
2014/01/17 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
学校联谊协议书
2014/09/16 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL