看板 Translate-CS 關於我們 聯絡資訊
※ [本文轉錄自 Python 看板 #1HajOy4e ] 作者: sandwichC (沒回應=掛站) 看板: Python 標題: [翻譯] Google 建議的 Python 風格指南 30, 31, 32 時間: Wed May 15 08:26:33 2013 未來幾天不一定會有網路,今天先寫個幾篇放著免得富奸~ --------------------------------------------------- 原文網址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html * 檔案與接口 (Socket) 使用完檔案及接口要明確地關閉它們。 檔案、接口、或其他類似檔案操作方式的物件,若已經不需要使用卻還開著有許多 壞處,包括: - 它們會消耗有限的系統資源,如:檔案述敘符 (file descriptor)。在程式中 大量使用這種物件,且在使用完後沒有把資源還給系統,將造成許多不必要的浪 費。 - 保持檔案開啟會妨礙其他對此檔案的操作,例如移動和刪除檔案。 - 若邏輯上而言檔案或接口應該要被關閉了,但沒關閉而且又不小心在程式的其 他部份對該檔進行讀寫,則會造成問題。若記得關閉,則讀寫的動作會丟出例外 ,讓程式儘早發現問題。 此外,雖然檔案和接口在程式檔案物件結束時就會被銷毀並回收,但在整個程式檔 案物件的生存時間都佔用這些資源並不合適,理由如下: - 檔案實際上何時會被關閉並回收資源其實並不一定。不同的 Python 版本可能 使用不一樣的記憶體管理策略,如:延遲垃圾回收 (delayed garbage collection),這種策略可能增加物件的生存時間,而且增加的時間長短未知。 - 意料外的檔案參考可能使它存在的時間比預期的時間久,如:在例外追縱中, 或在 global 之中 (編案:我不知道 inside globals 是什麼意思)。 操作檔案時優先使用 with 敘述: with open("hello.txt") as hello_file: for line in hello_file: print line 若類似檔案操作方式的物件不支援 with 敘述,使用 contextlib.closing(): import contextlib with contextlib.closing(urllib.urlopen("http://www.python.org/")) as front_page: for line in front_page: print line Python 2.5 遺留下來的程式,若要使用 with 敘述,可用: "from __future__ import with_statement" * TODO 註解 當程式碼是暫時的解法,或者是一個尚可但不完美的解法,則應加上 TODO 註解。 TODO 註解應包含 "TODO" 字串,全部大寫,然後用括弧包住能瞭解 TODO 待解決 事項的程式設計師的姓名,郵件地址,或其他能識別其身份的資訊。後面可以加上 冒號也可不加,然後說明 TODO 的事項是什麼。主要的目的是要有一個統一的 TODO 格式,事後才能搜尋並找到瞭解細節的人。寫 TODO 的人並不代表就一定要是實際 解決此問題的人,通常 TODO 的連絡人資訊就是寫 TODO 的人的資訊。 # TODO([email protected]): Use a "*" here for string repetition. # TODO(Zeke) Change this to use relations. 若 TODO 的事項是 "未來應完成某某功能",應明確地寫出未來的時間 (在 2009 年 11 月前修復),或很明確的事項 (當所有的 client 都能處理 XML 回應,就刪 除這段程式)。 * import 格式 不同的 import 要分行 例子: Yes: import os import sys No: import os, sys import 永遠放在檔案的開頭的區段,在模組的註解與文件字串 (doc string) 之 後,模組等級變數及常數之前。import 的順序應從最普遍的寫到最少見的: - 標準函式 - 第三方函式 - 此應用程式專屬函式 在每一類中,import 的對象依字母順序排列,不管大小寫,並以模組的完整 package 名稱為比較的基準。 import foo from foo import bar from foo.bar import baz from foo.bar import Quux from Foob import ar -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 68.232.121.105 ※ 編輯: sandwichC 來自: 68.232.121.105 (05/15 08:30) ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: sandwichC (68.232.121.105), 時間: 05/15/2013 08:32:14