看板 Translate-CS 關於我們 聯絡資訊
※ [本文轉錄自 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