※ 本文為 nakts0123.bbs. 轉寄自 ptt.cc 更新時間: 2013-05-05 19:14:30
看板 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
--
※ 看板: Gabinius 文章推薦值: 0 目前人氣: 0 累積人氣: 67
作者 sandwichC 的最新發文:
- 請問各位有花旗信用卡但無該行存款的卡友 若需要繳的金額>30萬時,有建議什麼方便的繳費方式嗎? 我過去大多用花旗App輸入他行帳戶直接繳費 但金額>30萬時好像會失敗 我主要的存款在郵局, …85F 24推
- 請問一下,若股利剛破20000, 按規定繳納 2.11% 的稅, 實拿會不會低於股利略低於 20000 的人啊? 按健保署的試算: 若股利所得 20001 元,補充保費422元,故實拿19579元 若 …36F 24推 1噓
- 原文網址: Google Python Style Guide * Generators 有需要時就用 generator 釋義: 一個 generator 函式的回傳值是一個 generator 物 …1F 1推
- 原文網址: Google Python Style Guide * Default Iterators and Operators 若變數的型態支援,應優先使用預設的迭代器 (iterator) 及通 …
- Google 建議的 Python 風格指南 7 原文網址: Google Python Style Guide * list comprehension 在邏輯簡單的情況下可以使用 list com …6F 2推
點此顯示更多發文記錄
→
guest
回列表(←)
分享