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查看zip包中文件及大小的方法
Jul 09 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
Python wxpython模块响应鼠标拖动事件操作示例
Aug 23 Python
python控制nao机器人身体动作实例详解
Apr 29 Python
python 画二维、三维点之间的线段实现方法
Jul 07 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
Python Pandas 转换unix时间戳方式
Dec 07 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 Python
python FTP编程基础入门
Feb 27 Python
python tkinter Entry控件的焦点移动操作
May 22 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 使用二进制保存用户状态的实例
2018/01/29 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
Python实现的简单hangman游戏实例
2015/06/28 Python
python查看zip包中文件及大小的方法
2015/07/09 Python
python3 shelve模块的详解
2017/07/08 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
药学专业大专生的自我评价
2013/12/12 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
个人收入证明范本
2014/01/12 职场文书
产假请假条
2014/04/10 职场文书
小学课外阅读总结
2014/07/09 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
公司授权委托书范文
2014/09/21 职场文书
2014年法务工作总结
2014/12/11 职场文书
Python 中random 库的详细使用
2021/06/03 Python
PHP实现两种排课方式
2021/06/26 PHP