1. 程式人生 > >改善Python程式的91個建議

改善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編寫擴充套件模組