看板 Translate-CS 關於我們 聯絡資訊
※ [本文轉錄自 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, 期待五月底看到大家。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.143 ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: tiefblau (140.112.30.143), 時間: 05/10/2013 11:13:45