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