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可跨平台实现获取按键的方法
Mar 05 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
如何使用python传入不确定个数参数
Feb 18 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
Python多线程thread及模块使用实例
Apr 28 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
python切割图片的示例
Nov 12 Python
python 获取计算机的网卡信息
Feb 18 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 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中使用XML
2006/10/09 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
Python重新引入被覆盖的自带function
2014/07/16 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python ftp上传文件
2016/02/13 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
英文版销售经理个人求职信
2013/11/20 职场文书
学校介绍信范文
2014/01/14 职场文书
培训自我鉴定
2014/01/31 职场文书
学校后勤岗位职责
2014/02/19 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
公司费用报销管理制度
2015/08/04 职场文书
小学数学教师研修日志
2015/11/13 职场文书
Python基础之元编程知识总结
2021/05/23 Python
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang