codecamp

Python默认迭代器规范 | Google官方写法

默认迭代器和操作符

Tip

只要可行, 就用列表、字典和文件等类型的默认迭代器和操作符。

定义:

字典和列表等容器类型具有默认的迭代器和关系运算符( in 和 not in)。

优点:

默认迭代器和操作符简单高效。
这种写法可以直白地表达运算,无需调用额外的函数。
使用默认操作符的函数是泛型函数, 可以用于任何支持该操作符的类型。

缺点:

你不能通过方法名来辨别对象的类型(除非变量有类型注解)。
不过这也是优点。

结论:

只要是支持的类型(例如列表、字典和文件)。
就使用默认迭代器和操作符。
内置类型也定义了一些返回迭代器的方法。
优先使用返回迭代器的方法,而非返回列表的方法,不过注意使用迭代器时不能修改容器。

正确

for key in adict: ...
if obj in alist: ...
for line in afile: ...
for k, v in adict.items(): ...

错误

for key in adict.keys(): ...
for line in afile.readlines(): ...
Python 推导式与生成式规范 | Google 官方写法
Python 生成器规范 | Google 官方 yield 最佳实践
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }