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 pickle 和 shelve模块的用法
Sep 16 Python
Python读写Redis数据库操作示例
Mar 18 Python
Python的迭代器和生成器使用实例
Jan 14 Python
pygame播放音乐的方法
May 19 Python
Python中if __name__ == '__main__'作用解析
Jun 29 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
python 环境变量和import模块导入方法(详解)
Jul 11 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
django2笔记之路由path语法的实现
Jul 17 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
python时间time模块处理大全
Oct 25 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下通过伪造http头破解防盗链的代码
2010/07/03 PHP
深入理解PHP原理之异常机制
2010/08/21 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
2016/08/16 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
解密Python中的描述符(descriptor)
2015/06/03 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
python安装及变量名介绍详解
2020/12/12 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
美国校园市场:OCM
2017/06/08 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
派出所所长先进事迹
2014/05/19 职场文书
火烧圆明园观后感
2015/06/03 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫