Fw: [翻译] Google 建议的 Python 风格指南 17

楼主: tiefblau (tiefblau)   2013-05-10 11:13:45
※ [本文转录自 Python 看板 #1HZ6KmxU ]
作者: tiefblau (tiefblau) 看板: Python
标题: [翻译] Google 建议的 Python 风格指南 17
时间: Fri May 10 11:10:37 2013
原文网址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
* Function and Method Decorators
只有当有显而意见的优点时,使用 Decorators
(PEP: http://docs.python.org/release/2.4.3/whatsnew/node6.html )
释义:
对函式与方法的装饰("the @ notation"),常见于转换一般方法(method)为类别(class)、
静态方法(static methods) : @classmethod 与 @staticmethod。
然而,装饰语法也支援使用者自己定义的装饰,具体而言,对于一个函式 my_decorator()
class C(object):
@my_decorator
def method(self):
# method body ...
等价于
class C(object):
def method(self):
# method body ...
method = my_decorator(method)
优点:
优雅地指定method的转换;可减少重复的程式码,加强不变性(invariant)...etc
缺点:
装饰语法对函式的参数与回传值可能会有有违本意的操作,产生出乎原先意料的行为。
此外,装饰在import时执行,一但错误的装饰程式码发生,几乎不可能修复。
决策:
当有显而易见的优点时,才聪明地使用 Decorators。同时遵守与函式一样的导入、命名原
则;有使用装饰的py文件,也应该明确的指出那些函式是decorator。对 decorators 单元
测试。
对于decorator本身,要避免外部依赖(e.g.依靠外部的 files, sockets, database conn-
ection, etc.),因为那些资料可能在实际执行 decorator 时(导入时、或许从pychecker
等其他工具程式),并无法被使用。
伴随着有效引数呼叫decorator时,应尽可能保证在任何情况下有正确的结果。
Decorators 是"top level code"的特殊情形-参考此指南最后一项 #Main 有更多讨论。
( http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Main )
===
欢迎指正与建议,谢谢。
已报名五月Taipei.py,但是初学几个月,程度跟资历都还太浅,叫我上台我只能分享用
Pythn写功课的心得跟被电爆的经验啦XD
Anyway, 期待五月底看到大家。

Links booklink

Contact Us: admin [ a t ] ucptt.com