改善Python程序的91个建议

  1. 理解Pythonic的概念
  2. 编写Pythonic代码
  3. 理解Python与C语言的不同之处
  4. 在代码中适当添加注释
  5. 适当添加空行使代码布局更为优雅、合理
  6. 编写函数的四个原则(原则一:函数设计尽量短小,嵌套层次不宜过深,原则二:函数申明做到合理、简单、易于使用。原则三:函数参数设计应该考虑向下兼容。原则四:一个函数只做一件事,尽量保证函数语句粒度的一致性。)
  7. 将常量集中到一个文件
  8. 利用assert语句来发现问题
  9. 数据交换值的时候不推荐使用中间变量
  10. 充分利用Lazy evaluation的特性
  11. 理解枚举代替实现的缺陷
  12. 不推荐使用type来进行类型检查
  13. 尽量转换为浮点类型后在做除法
  14. 警惕eval()的安全漏洞
  15. 使用enumerate()获取序列迭代的索引和值
  16. 分清==is的适用场景
  17. 考虑兼容性,尽可能适用Unicode
  18. 构建合理的包层次来管理module
  19. 有节制使使用from...import语句
  20. 优先使用absolute import来导入模块
  21. i+1=1不等于++1
  22. 使用with自动关闭资源
  23. 适用else子句简化循环(异常处理)
  24. 遵循异常处理的几点基本原则(1.注意异常的粒度,不推荐在try中放入过多的代码。2.谨慎使用单独的except的语句处理所有的异常,最好能定位具体的异常。3.注意异常的捕获的顺序,在合适的层次处理异常。4.使用更加友好的异常信息,遵循异常参数的规范)
  25. 避免finally中可能发生的陷阱
  26. 深入理解None,正确判断对象是否为空
  27. 连接字符串优先使用join而不是+
  28. 格式化字符串是尽量使用.format方式而不是%
  29. 区别对待可变对象和不可变对象
  30. []{}():一致的容器初始化形式(使用列表解析式
    ([expr for iter_var in iterable if cond_expr]),元组,集合,字典也有类似的语法。)
  31. 记住参数传参既不是传值也不是传引用
  32. 警惕默认参数潜在的问题
  33. 慎用变长参数
  34. 深入理解str()repr()的区别
  35. 分清staticmethodclassmethod的适用场景
  36. 掌握字符串的基本用法
  37. 按需选择sort()或者sorted()
  38. 使用copy模块深拷贝对象
  39. 使用Counter进行技术统计
  40. 深入掌握ConfigParser(配置文件)
  41. 使用argparse处理命令行参数
  42. 使用pandas处理大型CSV文件
  43. 一般情况使用ElementTree解析XML
  44. 理解模块pickle的优劣
  45. 序列化的另外一个不错的选择——JSON
  46. 使用traceback获取栈信息
  47. 使用logging记录日记信息
  48. 使用threading模块编写多线程程序
  49. 使用Queue是多线程编程更安全
  50. 利用模块实现单例模式
  51. mixin模式让程序更灵活
  52. 用发布订阅模式实现耦合
  53. 用状态模式美化代码
  54. 理解内建类型buit-in objects
  55. __init__()不是构造方法
  56. 理解名字查找机制
  57. 为什么需要self参数
  58. 理解MRO与多继承
  59. 理解描述符机制
  60. 区别__getattr__()__getattribute__()方法
  61. 使用更为安全的property
  62. 掌握metaclass
  63. 熟悉Python对象协议
  64. 利用操作符重载实现中缀语法
  65. 熟悉Python的迭代器协议
  66. 熟悉Python的生成器
  67. 基于生成器的协程及greenlet
  68. 理解GIL的局限性
  69. 对象的管理与垃圾回收
  70. pypi安装包
  71. 使用pipyolk安装、管理包
  72. paster创建包
  73. 理解单元测试概念
  74. 为包编写单元测试
  75. 利用测试驱动开发提高代码的可能性
  76. 使用Pylint检查代码风格
  77. 进行高效的的代码审查
  78. 将包发布到pypi
  79. 了解代码优化的基本原则
  80. 借助性能优化工具
  81. 利用cProfile定位性能瓶颈
  82. 使用memory_profilerobjgraph剖析内存使用
  83. 努力降低算法复杂度
  84. 掌握循环优化的基本技巧
  85. 使用生成器提高效率
  86. 使用不同的数据结构优化性能
  87. 充分利用set的优势
  88. 使用multiprocessing克服GIL的缺陷
  89. 使用线程池提高效率
  90. 利用C/C++模块扩展高性能
  91. 使用Cython编写扩展模块

猜你喜欢

转载自blog.csdn.net/qq_40965177/article/details/81840171
今日推荐