作者sandwichC (没回应=挂站)
看板Translate-CS
标题Fw: [翻译] Google 建议的 Python 风格指南 8
时间Thu May 2 21:42:54 2013
※ [本文转录自 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()
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 75.102.68.81
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: sandwichC (75.102.68.81), 时间: 05/02/2013 21:42:54