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创建线程示例
May 06 Python
SQLite3中文编码 Python的实现
Jan 11 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
Python使用post及get方式提交数据的实例
Jan 24 Python
python:按行读入,排序然后输出的方法
Jul 20 Python
Python简易版图书管理系统
Aug 12 Python
Python进度条的制作代码实例
Aug 31 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 Python
Python中关于logging模块的学习笔记
Jun 03 Python
Python测试框架:pytest学习笔记
Oct 20 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
JS随机密码生成算法
2019/09/23 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
有趣的python小程序分享
2017/12/05 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
会计自荐信范文
2014/03/09 职场文书
学校端午节活动总结
2015/02/11 职场文书
2015年科普工作总结
2015/07/23 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android