P強大的裝飾器

2021-10-09 20:47:57 字數 866 閱讀 3289

1、什麼是python函式裝飾器(下文簡稱裝飾器)?

裝飾器實際上就是乙個函式。這個函式有兩個特別之處:引數是乙個函式,返回值也是乙個函式。

2、從乙個簡單案例了解裝飾器的使用:在所有函式執行的時候,都要列印:xx函式執行了。如add(),列印add函式執行了。

from functools import wraps

def my_log(func):

# 需要使用functools.wraps在裝飾器中的函式上把傳進來的這個函式進行乙個包裹,這樣就不會丟失原來函式的__name__等屬性。

@wraps(func)

# 裝飾器定義的函式,要使用*args,**kwargs兩對兄弟的組合

print(func.__name__ + "執行了...")

# 並且在這個函式中定義原始函式的時候也要把*args,**kwargs傳進去

func(*args, **kwargs)

# 裝飾器使用是通過@符號,放在函式的上面

3、用途:常用於日誌記錄中。

python強大的裝飾器功能

python的裝飾器是python語言的一道難關,希望我能過關。再次不對裝飾器進行過多的說明,通過簡單的例子來了解裝飾器的使用。在python中我們時常需要列印函式的名字。我們可以在呼叫該函式的地方列印該函式的名字。我們進行下面的寫法 def getsum x,y return x y def pr...

裝飾器之類裝飾器

外部的方法至今都玩過了,現在來思索一下的方法這麼裝飾 類方法修飾器 類的方法唯一的特殊點在於,self內部是可以呼叫的,但是在外部卻是隱藏的,那這個怎麼搞 為求穩妥,先定參修飾乙個 def godme fun def godme self,message print before fun self,...

python裝飾器 裝飾器

由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強now 函式的...