1. 使用本地变量
尽量使用局部变量,避免使用全局变量
2.减少函数调用
(1)当我们判断对象的类别的时候,尽量使用isinstance(),其次使用id(),最不济使用type()
type(num)==type(0)
type(num) is type(0)
isinstance(num,(int))
每次循环都会调用len(a)
while i < len(a):
statement
只会执行一次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.将列表生成式替换成生成器
因为列表生成是会一次性把所有元素生成出来,如果元素过多的话就会占用大量内存
而生成器只会在调用的时候去执行
>>> 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()来执行的代码的时候,最好先使用compile()先进行预编译,而不是直接使用,这样可以避免重复编译的问题
正则匹配也是一样,最好先通过re.compile()
7.模块编写
在导入一个模块的时候,会执行这个没有缩进的代码。因此,应该把代码放在函数中。
测试代码可以写在模块的main()中,在代码运行的时候,会检测name的值,如果是main(表示直接运行的该模块,调用main()函数),如果是模块的名称(表示模块被调用),则不会执行测试。
更多Python视频、源码、资料加群683380553免费获取
原文地址:
https://www.tutorialdocs.com/article/7-habits-to-improve-python-programs.html