2009-01-26 52 views
44

我知道@staticmethod,@classmethod和@property,但只能通過分散的文檔。是否有內置於Python的函數裝飾器的完整列表?Python - 是否有一個裝飾器列表的地方?

+0

沒有官方列表,但是這個鏈接很有用:https://github.com/lord63/awesome-python-decorator – Casebash 2018-02-23 04:34:45

回答

28

我不這麼認爲。裝飾者與普通功能沒有什麼不同,你只能用更加奇特的方式給他們打電話。

爲了找到所有這些嘗試搜索Built-in functions名單,因爲你可以在Python glossary看到裝飾語法只是一個語法糖,如下面的兩個定義創造平等的功能(拷貝從詞彙本示例):

def f(...): 
    ... 
f = staticmethod(f) 

@staticmethod 
def f(...): 

所以任何返回另一個函數的內置函數都可以用作裝飾器。問題是 - 以這種方式使用它有意義嗎? :-)

functools模塊包含一些可用作裝飾器的函數,但它們不是您要求的內置函數。

12

它們不是內置的,但是示例裝飾器的this library非常好。

作爲Abgan says,內置的函數列表可能是最好看的地方,但作爲裝飾器也可以作爲類實現,但不能保證是全面的。

-2

有沒有這樣的事情作爲所有裝飾的列表。沒有所有功能的列表。沒有所有課程的列表。

裝飾器是定義跨功能,方法或類的共同方面的便捷工具。有內置的裝飾器。此外還有任何數量的酷和無用的裝飾。以同樣的方式,有許多很酷且無用的課程。

1

修飾器甚至不需要返回一個函數。我之前使用過@atexit.register

+0

那麼,那個人會返回傳遞給它的相同功能。 – 2009-01-27 03:43:22