Fw: [翻譯] Google 建議的 Python 風格指南 30, 31, 32
※ [本文轉錄自 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(kl@gmail.com): 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
討論串 (同標題文章)
Translate-CS 近期熱門文章
PTT數位生活區 即時熱門文章