提高Python程序性能的七個習慣

提高Python程序性能的七个习惯

Python在性能方面不卓越,但是使用一些小技巧,可以提高Python程序的性能,避免不必要的資源浪費。

1. 使用局部變量

儘可能使用局部變量替代全局變量,可以是程序易於維護並且有助於提高性能節約成本。

在模塊命名空間中將變量替換為局部變量,例如ls = os.linesep。一方面,可以提高程序性能,因為局部變量的搜素速度更快;另一方面,用短標識替換長模塊變量,提高可閱讀性。

2. 減少函數調用的數量

當需要確定對象類型時,使用isinstance方法最好,id次之,type最差。

提高Python程序性能的七个习惯

為了避免重複計算,不要把重複操作作為參數放入循環中。

提高Python程序性能的七个习惯

使用模塊X中的函數或者對象Y時,應該用from X import Y,而不是import X; X.Y。因此,當使用Y時,可以減少一次查詢(解析器不必先找到模塊X,然後在模塊X的字典中查找Y)。

3. 使用映射來替換條件搜索

映射(例如dict,等等)的搜索速度比條件語句(例如if,等等)快很多。在Python中沒有select-case語句。

提高Python程序性能的七个习惯

4. 直接迭代序列元素

對於序列(str, list, tuple, 等等),直接迭代序列元素比迭代元素索引要快。

提高Python程序性能的七个习惯

5. 用生成器表達式替換列表解析

列表解析生成整個列表,會對大量數據的迭代產生負面作用。

而生成器表達式不會。生成器表達式不會創建一個列表,相反返回一個生成器,在需要的時候生成具體值(延遲的),這種方式對內存友好。

提高Python程序性能的七个习惯

6. 先編譯後調用

當使用函數eval和exec來執行代碼時,最好調用代碼對象(通過compile()函數預先編譯成字節碼)而不是直接調用str,這樣可以避免重複編譯過程多次和提高程序的性能。

正則表達式模式匹配是類似的。 在執行比較和匹配之前,最好將正則表達式模式編譯為正則表達式對象(通過re.complie()函數)。

7. 模塊編程的習慣

模塊中最高級別的Python語句(無縮進代碼)將在導入模塊時執行(是否真的需要執行)。 因此,您應該嘗試將模塊的所有功能代碼放入函數中(與主程序相關的功能代碼也可以放入main()函數,主程序本身調用main()函數)。

測試代碼可以寫在模塊的main函數中。 將在主程序中檢測__name__的值。 如果是"__main__"(表示模塊是直接執行的),則調用main函數進行測試; 如果它是模塊的名稱(表示模塊被調用),則不會執行測試。

英文原文:https://www.tutorialdocs.com/article/7-habits-to-improve-python-programs.html
譯者:javylee


分享到:


相關文章: