Fw: [翻译] Google 建议的 Python 风格指南 8

楼主: sandwichC ( )   2013-05-02 21:42:54
※ [本文转录自 Python 看板 #1HWcrGOW ]
作者: sandwichC (没回应=挂站) 看板: Python
标题: [翻译] Google 建议的 Python 风格指南 8
时间: Thu May 2 21:42:37 2013
原文网址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
* Default Iterators and Operators
若变量的型态支援,应优先使用默认的迭代器 (iterator) 及通用的运算子。(支
援的变量类型如:list, dictionary, file)
释义:
若变量的型态是容器,如 dictionary 和 list,则支援默认的迭代器和成员关系测
试 ("in" 及 "not in")。
优点:
默认的迭代器及运算子简洁而有效率。它们不需要额外呼叫方法就能直接使用。通
用的运算子可以被多种型态的变量所使用。
缺点:
无法从物件的方法名来判断物件的型态。反之,若使用非默认的运算子,如:
x.has_key(),我们就能判断就能直接从方法名判断 x 的型态是 dictionary。然而
,这也可以算是一个优点。
决策:
若变量的型态支援 (如:list, dictionary, file),则应使用默认迭代器及通用运
算子。优先考虑返回 iterator,然后才考虑返回 list。然而,若需要改变
container,则不应该使用 iterator。
正确的例子:
for key in adict: ...
if key not in adict: ...
if obj in alist: ...
for line in afile: ...
for k, v in dict.iteritems(): ...
错误的例子:
for key in adict.keys(): ...
if not adict.has_key(key): ...
for line in afile.readlines(): ...
使用 iterator 同时改变 container 的错误例子:
li = range(100)
for i in li:
print li.pop()

Links booklink

Contact Us: admin [ a t ] ucptt.com