2015年1月14日

python decorator 也可以吃參數

看了草稿累積的狀況感覺... 來寫一點簡單的筆記好了。

最近碰了一點 python 的 decorator,透過 wrapper 的方式幫你處理一些 function 重複的部分,相對簡明而好懂。
但如果我需要多種 decorator 但只有些微的不同呢?
可能會考慮直接寫多個來實現, dec1, dec2, ... 然後再用 function 的方式去包裝,考慮了 http://stackoverflow.com/questions/10176226/how-to-pass-extra-arguments-to-python-decorator 裡面說的,也可以透過傳一個參數的方式去實現。

python 並非原生支援這種語法,所以寫起來有點難讀,不過使用的時候會比較簡潔。

另外一個在寫 decorator 遇到的事, 就是要注意進入 function wrapper 的時候,原來要傳入的 arguments 並不存在 wrapper 的 scope 。所以只能多包東西進去,不能調整傳進來的東西。

沒有留言: