衆所周知,程序的性能好壞影響着用戶體驗。因此性能是留住用戶很重要的一環。Python 語言雖然能作不少事情,可是有一個不足之處,那就是執行效率和性能不夠理想。算法
所以,更有必要進行必定的代碼優化來提升 Python 程序的執行效率。本文章主要是輸出本身在 Python 程序優化的經驗。函數
推薦下我本身建立的Python學習交流羣960410445,這是Python學習交流的地方,無論你是小白仍是大牛,小編都歡迎,不按期分享乾貨,包括我整理的一份適合零基礎學習Python的資料和入門教程。性能
Python 的標準庫中有不少內置函數,它們的運行效率都很高。由於不少標準庫是使用 C 語言編寫的。Pyhton 的內置函數有:學習
運算符 "+" 不只能用於加法運算,還能作字符串鏈接。可是這種效率不是很高。在 Python 中,字符串變量在內存中是不可變的。若是使用 "+" 拼接字符串,內存會先建立一個新字符串,而後將兩個舊字符串拼接,再複製到新字符串。推薦使用如下方法:優化
使用 "%" 運算符鏈接翻譯
這種方式有點像 C 語言中 printf 函數的功能,使用 "%s" 來表示字符串類型參數,再用 "%" 鏈接一個字符串和一組變量。3d
使用 format() 格式化鏈接orm
這種格式化字符串函數是 Python 特有的,屬於高級用法。由於它威力強大,不只支持多種參數類型,還支持對數字格式化。cdn
上述代碼使用隱式的位置參數,format() 還能顯式指定參數所對應變量的位置。blog
使用 join() 方式
這種算是技巧性辦法。join() 方法一般是用於鏈接列表或元組中的元素。
generator 翻譯成中文是生成器。生成器也是一種特殊迭代器。它實際上是生成器函數返回生成器的迭代。生成器算是 Python 很是棒的特性。它的出現能幫助大大節省些內存空間。
假如咱們要生成從 1 到 10 這 10 個數字,採用列表的方式定義,會佔用 10 個地址空間。採用生成器,只會佔用一個地址空間。由於生成器並無把全部的值存在內存中,而是在運行時生成值。因此生成器只能訪問一次。
雖然使用While True和while 1都能實現死循環,可是while 1是單步運算,因此效率會高一點。
交換將兩個變量的值,咱們會立馬想到應用一個第三方變量的方法。
Python 素有優雅的名聲,因此有一個更加優雅又快速的方法,那就是多重賦值。
Python 標準庫中有個 bisect 模塊是內置模塊,它實現了一個算法用於插入元素到有序列表。在一些狀況下,這比反覆排序列表或構造一個大的列表再排序的效率更高。
07儘可能使用局部變量
Python 檢索局部變量比檢索全局變量快。所以, 儘可能少用 "global" 關鍵字。