7個提公升Python程式設計師的效能的好習慣

2021-08-29 10:19:01 字數 1717 閱讀 7881

①使用區域性變數代替全域性變數

如:s = os.linesep  #優點簡短標識便於維護,區域性變數查詢更快,能提高效能並節省記憶體;

②減少函式呼叫次數

物件型別判斷時,採用isinstance()比較最優,物件型別身份(id())比較次子,採用(type())比較最次;

#如判定變數num是否為整數型別

isinstance(num, (int)) #呼叫一次函式

type(num) is type(0)   #身份比較

type(num) == type(0)   #呼叫三次函式

#不要把重複操作的內容作為引數放到迴圈條件中,避免重複運算

#每次迴圈都需要重新執行len(a)

while i < len(a):

statement

#len(a)僅執行一次

m = len(a)

while i < m:

statement

#使用x中的某個函式或物件y時,應該直接用 from x import y,而不是import x 或 import x.y;

這樣可以減少一次查詢(解析器不必要首先查詢x模組,然後在x模組的字典中查詢y)

③採用對映代替條件查詢

#對映(比如dict等)的搜尋速度遠快於條件語句(比如if等)。

#if查詢

if a == 1:

b = 10

elif a == 2:

b = 20

...#dict查詢,效能更優

d =

b = d[a]

④直接迭代序列元素

對序列(str,list,tuple等),直接迭代序列元素,比迭代元素的索引速度更快。

a = [1, 2, 3]

#迭代元素

for item in a:

print(item)

#迭代索引

for i in range(len(a)):

print(a[i])

⑤採用生成器表示式代替列表解析

列表解析(list comprehension),會產生整個列表,對大量資料的迭代會產生負面效應.

而生成器表示式則不會,其不會真正建立列表,而返回乙個生成器,在需要時產生乙個值(延遲計算),對記憶體更加優化。

#計算檔案f的非空字元個數

#列表解析

a = sum([i*i for i in range(6)])

#生成器表示式

b = sum(i*i for i in range(6))

⑥先編譯後呼叫

# 使用eval(),exec()函式執行**時,最好呼叫**物件(提前通過compile()函式編譯成位元組碼),而不是直接呼叫str,可以避免多次執行重複編譯過程,提高程式效能

# 正規表示式模式模式匹配也類似,也最好先將正規表示式模式編譯成regex物件(通過re.complie()函式),然後再執行比較和匹配

⑦模組程式設計習慣

#模組中的最高端別python語句(沒有縮排的**)會在模組匯入(import)時執行(不論其是否真的必要執行)。

因此,應盡量將模組所有的功能**放到函式中,包括主程式相關的功能**也可以放到main()函式中,主程式本身呼叫main()函式

#可以在模組的main()函式中書寫測試**。在主程式中,檢測name的值,如果為'main'(表示模組是被直接執行),則呼叫main()函式,進行測試;

如果為模組名字(表示模組是被呼叫),則不進行測試

程式設計師的提公升

引用 1.太害怕學不會新的工具 語言和框架 一般的程式設計師會墨守他們最喜歡的工具,而不希望學習新的,因為他們認為,離開了那些語言和工具,多年的經驗就會付諸東流。而強大的程式設計師會擁抱那些挑戰和機會,積極地學習新的工作方式。2.直到特性 完成 的時候才會提交。但永遠都不會完成!他在markedup...

提公升程式設計師效率

筆者工作多年,總結了一些經驗,可以幫助大家成為乙個更加高效的程式設計師。程式設計法則,與設計和工程的原理密切相關。下面這些程式設計法則幫助我讓我獲益匪淺,所以我想分享給大家,希望也能幫助大家更高效,生產出的 更容易維護,並且bug和缺陷更少。dry原則 不要重複 don t repeat yours...

程式設計師的自我提公升

本文分為2個部分 1 優秀程式設計師的定義 2 程式設計師的提公升 程式設計師?什麼是程式設計師,個人的見解是了解至少一門程式語言,利用這門語言在某些場合獲取到金錢。一般地,碼農 黑客 或者架構師等等,只要使用程式語言 優秀程式設計師的定義 若是想要提公升自己,首先要明確乙個方向,然後朝著方向堅定不...