首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

写出高效率python的90个方法,附案例(python3经典编程案例)

  • 25-04-23 23:41
  • 3663
  • 6793
blog.csdn.net

更多内容请见: python3案例和总结-专栏介绍和目录

文章目录

    • 一. 培养Pythonic思维
      • 1. 查询自己使用的python版本
      • 2. 遵循PEP8风格指南
      • 3. 了解bytes与str的区别
      • 4. 用支持插值的f-string取代C风格的格式字符串和str.format方法
      • 5. 用辅助函数取代复杂的表达式
      • 6. 把数据结构直接拆分到多个变量里,不要专门通过下标访问
      • 7. 尽量用enumerate取代range
      • 8. 用zip函数同时遍历两个迭代器
      • 9. 不要在for与while循环后面写else块
      • 10. 用赋值表达式减少重复代码
    • 二. 列表与字典
      • 11. 学会对序列做切片
      • 12. 不要在切片里同时 起止下标与步进
      • 13. 通过带星号的unpacking操作来捕获多个元素,不要用切片
      • 14. 用sort方法的key参数来表示复杂的排序逻辑
      • 15. 不要过分依赖给字典添加条目时所用的顺序
      • 16. 用get处理键不在字典中的情况,不要使用in与KeyError
      • 17. 用defaultdict处理内部状态中缺失的元素,而不要用setdefault
      • 18. 学会利用__missing__构造依赖键的默认值
      • 19. 不要把函数返回的多个数值拆分到三个以上的变量中
    • 三. 函数
      • 20. 遇到意外状况时应该抛出异常,不要返回None
      • 21. 了解如何在闭包里面使用外围作用域中的变量
      • 22. 用数量可变的位置参数给函数设计清晰的参数列表
      • 23. 用关键字参数来表示可选的行为
      • 24. 用None和docstring来描述默认值会变的参数
      • 25. 用只能以关键字 和只能按位置传入的参数来设计清晰的参数列表
      • 26. 用functools.wraps定义函数修饰器
    • 四. 推导与生成
      • 27. 用列表推导取代map与filter
      • 28. 控制推导逻辑的子表达式不要超过两个
      • 29. 用赋值表达式消除推导中的重复代码
      • 30. 不要让函数直接返回列表,应该让它逐个生成列表里的值
      • 31. 谨慎地迭代函数所收到的参数
      • 32. 考虑用生成器表达式改写数据量较大的列表推导
      • 33. 通过yield from把多个生成器连起来用
      • 34. 不要用send给生成器注入数据
      • 35. 不要通过throw变换生成器的状态
      • 36. 考虑用itertools拼装迭代器与生成器
    • 五. 类与接口
      • 37. 用组合起来的类来实现多层结构,不要用嵌套的内置类型
      • 38. 让简单的接口接受函数,而不是类的实例
      • 39. 通过@classmethod多态来构造同一体系中的各类对象
      • 40. 通过super初始化超类
      • 41. 考虑用mix-in类来表示可组合的功能
      • 42. 优先考虑用public属性表示应受保护的数据,不要用private属性表示
      • 43. 自定义的容器类型应该从collections.abc继承
    • 六. 元类与属性
      • 44. 用纯属性与修饰器取代旧式的setter与getter方法
      • 45. 考虑用@property实现新的属性访问逻辑,不要急着重构原有的代码
      • 46. 用描述符来改写需要复用的@property方法
      • 47. 针对惰性属性使用`__getattr__、__getattribute__及 __setattr__`
      • 48. 用__init_subclass__验证子类写得是否正确
      • 49. 用__init_subclass__记录现有的子类
      • 50. 用`__set_name__`给类属性加注解
      • 51. 优先考虑通过类修饰器来提供可组合的扩充功能,不要使用元类
    • 七. 并发与并行
      • 52. 用subprocess管理子进程
      • 53. 可以用线程执行阻塞式I/O,但不要用它做并行计算
      • 54. 利用Lock防止多个线程争用同一份数据
      • 55. 用Queue来协调各线程之间的工作进度
      • 56. 学会判断什么场合必须做并发
      • 57. 不要在每次fan-out时都新建一批Thread实例
      • 58. 学会正确地重构代码,以便用Queue做并发
      • 59. 如果必须用线程做并发,那就考虑通过ThreadPoolExecutor实现
      • 60. 用协程实现高并发的I/O
      • 61. 学会用asyncio改写那些通过线程实现的I/O
      • 62. 结合线程与协程,将代码顺利迁移到asyncio
      • 63. 让asyncio的事件循环保持畅通,以便进一步提升程序的响应能力
      • 64. 考虑用concurrent.futures实现真正的并行计算
    • 八. 稳定与性能
      • 65. 合理利用try/except/else/finally结构中的每个代码块
      • 66. 考虑用contextlib和with语句来改写可复用的try/finally代码
      • 67. 用datetime模块处理本地时间,不要用time模块
      • 68. 用copyreg实现可靠的pickle操作
      • 69. 在需要准确计算的场合,用decimal表示相应的数值
      • 70. 先分析性能,然后再优化
      • 71. 优先考虑用deque实现生产者-消费者队列
      • 72. 考虑用bisect搜索已排序的序列
      • 73. 学会使用heapq制作优先级队列
      • 74. 考虑用memoryview与bytearray来实现无须拷贝的bytes操作
    • 九. 测试与调试
      • 75. 通过repr字符串输出调试信息
      • 76. 在TestCase子类里验证相关的行为
      • 77. 把测试前、后的准备与清理逻辑写在setUp、tearDown、setUpModule与tearDownModule中,以防用例之间互相干扰
      • 78. 用Mock来模拟受测代码所依赖的复杂函数
      • 79. 把受测代码所依赖的系统封装起来,以便于模拟和测试
      • 80. 考虑用pdb做交互调试
      • 81. 用tracemalloc来掌握内存的使用与泄漏情况
    • 十. 协作并发
      • 82. 学会寻找由其他Python开发者所构建的模块
      • 83. 用虚拟环境隔离项目,并重建依赖关系
      • 84. 每一个函数、类与模块都要写docstring
      • 85. 用包来安排模块,以提供稳固的API
      • 86. 考虑用模块级别的代码配置不同的部署环境
      • 87. 为自编的模块定义根异常,让调用者能够专门处理与此API有关的异常
      • 88. 用适当的方式打破循环依赖关系
      • 89. 重构时考虑通过warnings提醒开发者API已经发生变化
      • 90. 考虑通过typing做静态分析,以消除bug

Effective Python摘录。

一. 培养Pythonic思维

1. 查询自己使用的python版本

import sys
print(sys.version_info)
print(sys.version)

# 代码自动检查
  • 1
  • 2
  • 3
  • 4
数据知道的成长之路
微信公众号
成长进阶、技术分享、资源获取
注:本文转载自blog.csdn.net的数据知道的文章"https://cuiyonghua.blog.csdn.net/article/details/119882988"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top