7个习惯提升python效率(译)

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

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
 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()函数),如果是模块的名称(表示模块被调用),则不会执行测试。

原文地址:
https://www.tutorialdocs.com/article/7-habits-to-improve-python-programs.html

你可能感兴趣的:(7个习惯提升python效率(译))