小健_Python_go_Devops
latest
Go语言学习
Go vs Python
Python全栈系列
1. Python数据类型
2. Python流程控制语句
3. Python函数
4. Python内建函数
5. Python推导式学习
6. Python生成器、迭代器、装饰器
7. Python面对对象设计_OOP
8. Python异常处理
9. Python文件操作
10. Python中包和模块
11. Python正则表达式
12. Python 标准库学习
13. Python对数据库的操作
14. Python 三方库学习
15. Python 网络编程
16. Python 进程和线程
17. Python与C语言扩展
18. 系统管理员的Python脚本编程指南-读书笔记
19. Python自动化运维最佳实践
20. Python进阶学习
21. Python网络爬虫
22. 前端基础知识
23. Python框架
24. Python开发环境部署
25. 我的第一本算法书
26. Python3网络爬虫开发实战
27. Python让繁琐的工作自动化
28. 疯狂的Python讲义
29. Django_Vue
30. 编写Python的90个有效方法
30.1. 培养Pythonic思维
30.2. 列表与字典
30.3. 函数
30.4. 推导与生成
30.5. 类与接口
30.6. 附录-Pycharm中文指南
31. Vue3.0管理系统
Python测试开发入门与实践
Vue.js企业开发实战
Vue.js+Node.js开发实战
小健_Python_go_Devops
»
Python全栈系列
»
30.
编写Python的90个有效方法
Edit on GitHub
30.
编写Python的90个有效方法
¶
30.1. 培养Pythonic思维
30.1.1. 查询自己使用的Python版本
30.1.2. 遵循PEP 8风格指南
30.1.3. 了解bytes与str的区别
30.1.4. 格式化字符的多种方式
1. %的方式格式化
2.内置的format函数与str类的format方法
3.插值格式字符串
30.1.5. 用辅助函数取代复杂的表达式
30.1.6. 把数据结构直接拆分到多个变量
30.1.7. 尽量用enumerate取代range
30.1.8. 用zip函数同时遍历两个迭代器
30.1.9. 不要在for与while循环后面写else块
30.1.10. 用赋值表达式减少重复代码
30.2. 列表与字典
30.2.1. 学会对序列做切片
30.2.2. 不要在切片里同时指定起止下标与步进
30.2.3. unpacking操作来捕获多个元素
30.2.4. 使用sort来表示复杂的排序
30.2.5. 字典很多时候是无序的
30.2.6. get处理字典数据
30.2.7. 用defaultdict处理内部状态中缺失的元素
30.2.8. 利用__missing__构造依赖键的默认值
30.3. 函数
30.3.1. 函数的返回值不要超过3个
30.3.2. 尽量抛异常,避免返回None
30.3.3. 闭包使用外围作用域变量
30.3.4. 位置参数给函数设计清晰的参数列表
30.3.5. 用关键字参数来表示可选的行为
30.3.6. 用None和docstring来描述默认值会变的参数
30.3.7. 使用关键字参数和位置参数设计参数列表
30.3.8. functools.wraps定义函数修饰器
30.4. 推导与生成
30.4.1. 用列表推导取代map与filter
30.4.2. 推导逻辑的子表达式不要超过两个
30.4.3. 用赋值表达式消除推导中的重复代码
30.4.4. 函数返回列表时最好返回生成器
30.4.5. 谨慎地迭代函数所收到的参数
30.4.6. 生成器表达式代替列表推导
30.4.7. 通过yield from把多个生成器连起来用
30.4.8. 不要用send给生成器注入数据
30.4.9. 不要通过throw变换生成器的状态
30.4.10. 考虑用itertools拼装迭代器与生成器
30.5. 类与接口
30.5.1. 用组合起来的类来实现多层结构,不要用嵌套的内置类型
30.5.2. 让简单的接口接受函数,而不是类的实例
30.5.3. 通过@classmethod多态来构造同一体系中的各类对象
30.5.4. 通过super初始化超类
30.6. 附录-Pycharm中文指南
30.6.1. PyCharm中文指南-v2
参考文献