代码规范
const
const集中到一个文件,并且使之只读不改。
assert
- 在执行时,使用
python -O assert
可以禁止断言。 - 断言应用在正常逻辑总为真的情况,不要滥用。如果本身就会抛出python异常的就不要用断言,如类型不匹配,越界或除0之类的
- 用户的输入用条件来判断,然后抛出异常,而非assert
- 在函数调用后,确认返回值是否合理,可以用断言
性能
数据交互
数据交换 x,y = y,x
比中间变量性能更高
or/and顺序
对于or和and,or前面应该加为True频率比较高的,而and前面应该加True频率比较低的
yield lazy执行
yield (lazy执行, 可以写无限循环而不会进入死循环,只有需要计算的时候才产生结果)
def seq():
i = 0
while True:
yield i
i += 1
seqs = seq()
print(seqs)
i = 0
for k in seqs:
print(k)
i += 1
if i > 5:
break
执行结果:
0
1
2
3
4
5
enumerate
使用enumerate来获取迭代索引和值,它也是lazy的,而且简洁。
安全性
eval
出于安全性的考虑,尽量不要使用eval或os.system,因为用户有可能传进来一些不好的操作,无法控制。