顯示廣告
隱藏 ✕
※ 本文為 nakts0123.bbs. 轉寄自 ptt.cc 更新時間: 2013-05-05 19:14:30
看板 Python
作者 sandwichC (沒回應=掛站)
標題 [翻譯] 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 累積人氣: 66 
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇