看板 Python 關於我們 聯絡資訊
原文網址: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, 期待五月底看到大家。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.143
suhorng:推推~~ 05/10 13:29
timTan:也記得報 PyCon XD 多拉一些人吧。聽 PyCon 很 High 的。 05/10 20:40