-
确认自己所使用的python版本
-
遵循PEP8风格指南
函数、变量及属性应该用小写字母来拼写,各单词之间以下划线相连,例lowercase_underscore.
类与异常:每个单词均大写的形式来命名,例如CaoutlizedWord.
不要编写单行的if语句、for循环、while循环以及except语句
不要通过检测长度的办法来判断somelist是否为[] ,而应该采用 if not somelist这种形式。 -
了解byte、str与unicode的区别
-
用辅助函数来取代复杂的表达式
-
了解切割序列的办法
-
在单次切片操作内,不要同时指定start、end和stride
-
用列表推导式来取代map和filter
-
不要使用含有两个以上表示的列表推导
-
用生成器表达式来改写数据量较大的列表推导
-
尽量使用enumerate取代range
enumerate将各种迭代器包装为生成器,以便稍后产生输出值。
for i, flavor in enumerate(flavor_list):
print(i,flavor)
还可以值得enumerate开始计数的值enumerate(flavor_list)
- 用zip同时遍历两个迭代器
python3中的zip函数,可以把两个或两个以上的迭代器封装为生成器。
names=['aaaaa','ass','aa']
letters=[len(n) for n in names]
for i name in enumerate(names):
count = letters[i]
if count>max_letter:
longest_name =name
max_letters= count
优化
for name,count in zip(names,letters):
if count > max_letter:
longest_name=name
max_letters= count
第一个问题是,python2的zip并不是迭代器。
第二个问题是,如果输入的迭代器长度不同,那么zip就会出现奇怪的行为。
-
不要在for和while循环后面写else块
-
合理利用try/except/else/finally结构中的每一个代码块
handle = open('/tm/data.txt')
try