作者sandwichC (没回应=挂站)
看板Translate-CS
标题Fw: [翻译] Google 建议的 Python 风格指南 30, 31, 32
时间Wed May 15 08:32:14 2013
※ [本文转录自 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