1. 使用本地變量
盡量使用局部變量,避免使用全局變量
2.減少函數調用
(1)當我們判斷對象的類別的時候,盡量使用isinstance(),其次使用id(),最不濟使用type()
type(num)==type(0)
type(num) is type(0)
isinstance(num,(int))
每次循環(huán)都會調用len(a)
while i < len(a):
statement
只會執(zhí)行一次len(a)
m = len(a)
while i<m:
statement
3.使用字典來代替多種條件判斷
if a==1:
b=10
elif a==2:
b=20
elif a==3:
b=30
case = {1:10,2:20,3:30}
reslut = case[key]
4.遍歷對象要比遍歷對象的索引快
a = [1,2,3,4]
for item in a:
print(item)
nums = len(a)
for item in range(nums):
print(a[item])
5.將列表生成式替換成生成器
因為列表生成是會一次性把所有元素生成出來,如果元素過多的話就會占用大量內存
而生成器只會在調用的時候去執(zhí)行
>>> sum(len(n) for n in line.split())
28
>>> line = 'sajhdnj sadkl auishc bzhxjas asjkn aksmx oasid'
>>> sum_word = [len(n) for n in line.split()]
>>> sum_word
[7, 5, 6, 7, 5, 5, 5]
>>> sum_word_g = (len(n) for n in line.split())
>>> sum_word_g
<generator object <genexpr> at 0x10a032410>
>>> for n in sum_word_g:
... print(n)
...
7
5
6
7
5
5
5
6.先編譯然后調用
在使用函數eval()和exec()來執(zhí)行的代碼的時候,最好先使用compile()先進行預編譯,而不是直接使用,這樣可以避免重復編譯的問題
正則匹配也是一樣,最好先通過re.compile()
7.模塊編寫
在導入一個模塊的時候,會執(zhí)行這個沒有縮進的代碼。因此,應該把代碼放在函數中。
測試代碼可以寫在模塊的main()中,在代碼運行的時候,會檢測name的值,如果是main(表示直接運行的該模塊,調用main()函數),如果是模塊的名稱(表示模塊被調用),則不會執(zhí)行測試。
原文地址:
https://www.tutorialdocs.com/article/7-habits-to-improve-python-programs.html