1. 程式人生 > >python編程規範與代碼優化建議

python編程規範與代碼優化建議

運行 三引號 時間 gui 順序 con 關系運算符 運行速度 擴展

1.嚴格使用縮進來體現代碼的邏輯從屬關系。

  python對代碼的縮進是硬性要求,這一點必須時刻註意。如果某個代碼段的縮進不對,那麽整個程序就是錯的,要麽是語法錯誤無法執行,要麽是邏輯錯誤導致錯誤結果,而檢查這樣的錯誤會花費很多時間。

2.每個import語句只導入一個模塊,最好按標準庫、擴展庫、自定義庫的順序依次導入。

  盡量避免導入整個庫,最好只導入確實需要使用的對象,這會讓程序運行更快。

3.最好在每個類、函數定義和一段完整的功能代碼之後增加一個空行,在運算符兩側各增加一個空格,逗號後面增加一個空格。

  按照這樣的規範寫出來的代碼布局和排版比較松散,閱讀起來更加輕松。不論是前面第一條講的縮進,還是這裏談的空行與空格,主要是提高代碼可讀性。稍微有點例外的是,在正常的賦值表達式中等號兩側都是各增加一個空格,但在定義函數的默認值參數和使用關鍵字參數調用函數時一般並不在參數賦值的等號兩側增加空格。這樣松中有緊也是為了提高代碼的可讀性。

4.盡量不要寫過長的語句。

  如果語句過長,可以考慮拆分成多個短一些的語句,以保證代碼具有較好的可讀性。如果語句確實太長而超過屏幕寬度,最好使用續行符(line continuation character)“\”,或者使用圓括號將多行代碼括起來表示是一條語句。

5.雖然python運算符有明確的優先級,但對於復雜的表達式建議在適當的位置使用括號使得各種運算的隸屬關系和順序更加明確。

6.對關鍵代碼和重要的業務邏輯代碼進行必要的註釋。

  統計數據表明,一個可讀性較好的程序中應包含大概30%以上的註釋。在python中有兩種常用的註釋形式:#和三引號。#用於單行註釋,三引號常用於大段說明性文本的註釋。

7.在開發速度和運行速度之間盡量取得最佳平衡。

  內置對象運行速度最快,標準庫運行次之,用C或FORTRAN編寫的擴展庫運行速度也比較快,而純python的擴展庫往往速度慢一些。因此,在開發項目時,應優先使用python內置對象,其次考慮使用python標準庫提供的對象,最後考慮使用第三方擴展庫。然而,有時候只使用內置和標準庫對象的話,很可能無法直接滿足需要。這時候有兩個選擇:一是使用內置對象和標準庫對象編寫代碼實現特定的邏輯;二是使用合適的擴展庫對象。至於如何取舍,最終還是取決於業務邏輯的復雜程度和對運行速度的要求這兩者之間的平衡。

8.根據運算特點選擇最合適的數據類型來提高程序的運行效率。

  如果定義一些數據只是用來頻繁遍歷,最好優先考慮元組或集合。如果需要頻繁地測試一個元素是否存在於一個序列中並且不關心其位置,盡量采用字典或集合。列表和元組的in操作的時間復雜度是線性的,而對於集合和字典確是常數級的,與問題規模幾乎無關。在所有內置數據類型中,列表的功能最強大,但開銷也大,運行速度最慢,應慎重使用。作為建議,應優先考慮使用集合和字典,元組次之,最後再考慮列表和字符串。

9.充分利用關系運算符以及邏輯運算符and和or的惰性求值特點,合理組織條件表達式中多個條件的先後順序,減少不必要的計算。

10.充分利用生成器對象或類似叠代對象的惰性計算特點,盡量避免將其轉換為列表、元組等類型,這樣可以減少對內存的占用,減低空間復雜度。

11.減少內循環中的無關計算,盡量往外層提取。

有很多成熟的工具可以檢查python代碼的規範性,例如 pep8、flake8、pylint等。可以使用pip來安裝pep8工具,然後使用命令 pep8 test.py 來檢查test.py 文件中python代碼的規範性。pep8 常用的可選參數有--show-source、--first、--show-pep8 等。flake8結合了pyflake和 pep8 的特點,可以檢查更多的內容,優先推薦使用,使用 pip install flake8 可以直接安裝,然後使用命令flake8 test.py 檢查 test.py 中代碼的規範性。也可以使用 pip 安裝 pylint,然後使用命令行工具 pylint 或者可視化工具 pylint-gui 來檢查程序的規範性。

python編程規範與代碼優化建議