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基于urllib实现按照百度音乐分类下载mp3的方法
May 25 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
python将时分秒转换成秒的实例
Dec 07 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
Python计算公交发车时间的完整代码
Feb 12 Python
Python作用域与名字空间原理详解
Mar 21 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
Python使用海龟绘图实现贪吃蛇游戏
Jun 18 Python
Python中可变和不可变对象的深入讲解
Aug 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
php Session存储到Redis的方法
2013/11/04 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
Angular2库初探
2017/03/01 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
Python爬取读者并制作成PDF
2015/03/10 Python
Python常用知识点汇总
2016/05/08 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
利用python实现周期财务统计可视化
2019/08/25 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
什么是python类属性
2020/06/10 Python
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
车间班长岗位职责
2013/11/30 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
总账会计岗位职责
2014/03/13 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
2014年环卫工作总结
2014/11/22 职场文书
学前班学生评语
2014/12/29 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
员工辞职信范文大全
2015/05/12 职场文书