Python 规范性
误用builtin关键字,例如str/len……
from xxx import *
污染命名空间,可能发生命名重叠
type低效使用
低情商:
type(val) is str
高情商:
isinstance(val, str)
对于想要判断的变量可能存在多个类型时,可使用tuple
isinstance(val, (str, list, int))
不使用迭代器
xrange -> range
items -> iteritems
keys -> iterkeys
values -> itervalues
既要遍历索引,又要遍历元素,使用enumerate
Python 性能规范
问题:
大量字符串拼接、切片
大量if/else分支判断造成消耗
对于属性过深的查询,a.b.c.d.e
每.
就会使Python在底层进行一次查表操作
解决:
join代替字符串+=,减小底层字符串开销
恰当使用容器
多用list comprehension,列表推导式比for循环和map都要快
for很慢,有时可用map/reduce/filter/list comprehension代替
多用迭代器
尽量使用builtin函数,不自己手搓,因为builtin函数底层是C写的