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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
python中对二维列表中一维列表的调用方法
Jun 07 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
PyTorch中的torch.cat简单介绍
Mar 17 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通过function_exists检测函数是否存在的方法
2015/03/18 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
Node.js学习入门
2017/01/03 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
Angular简单验证功能示例
2017/12/22 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python对数据库操作
2016/03/28 Python
python操作mysql数据库
2017/03/05 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
医学院毕业生自荐信
2013/11/08 职场文书
医学生自荐信范文
2013/12/03 职场文书
趣味游戏活动方案
2014/02/07 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
现场活动策划方案
2014/08/22 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android