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提取网页中超链接的方法
Sep 18 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
Python操作MySQL数据库的方法
Jun 20 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
NumPy 基本切片和索引的具体使用方法
Apr 24 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
Python collections.deque双边队列原理详解
Oct 05 Python
Python Django路径配置实现过程解析
Nov 05 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 Python
python Zmail模块简介与使用示例
Dec 19 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使用ob_start生成html页面的方法
2014/11/07 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
python修改注册表终止360进程实例
2014/10/13 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
python groupby 函数 as_index详解
2019/12/16 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
二手书店创业计划书
2014/01/16 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技