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