關於裝飾器的理解,特別像《盜夢空間》中的進入夢境和從夢境出來的過程,一層一層的深入夢境,然後又一層一層的返回,被帶入夢境的是被裝飾的函式,裝飾器就是使人入夢的工具。
上**:
from functools import wraps以上是裝飾器的部分。def decorator_with_argument(argument=''):
def outer(func):
message = argument + func.__name__
@wraps(func)
def inner(*args, **kwargs):
print(message)
print('this is inner function running')
return func(*args, **kwargs)
return inner
return outer
接下來,是帶引數的裝飾器:
@decorator_with_argument("decorator's argument + ")最後,函式的執行:def pfunc(arg='default'):
print('this is pfunc running')
print(f'this " " is from pfunc argument')
pfunc("pfunc's argument")函式本身也是帶引數的。輸出結果如下:
decorator's argument + pfunc
this is inner function running
this is pfunc running
this " pfunc's argument " is from pfunc argument
process finished with exit code 0
下圖是關於夢境的具體圖示:
如果你也有關於裝飾器的有趣的描述,或者對於裝飾器有不同的理解,歡迎交流。
python 帶引數裝飾器
在前面一文 python裡為什麼需要使用裝飾器 decorator 裡,我們學習了為什麼需要裝飾器,知道裝飾器就是為了不修改原來函式的 又達到增加功能的作用。其實為了裝飾器更通用化,那麼裝飾器是否也可以帶引數呢?其實是可以的,這樣更加通用化了,達到共享極點。在前面也學習 為什麼要使用閉包 closu...
python 實現帶引數的裝飾器
coding utf8 author bluesli defbefore request,kwarg print before defafter request,kwarg print after deffilter before fun,after fun defouter main fun de...
python 之 帶引數的裝飾器
from functools import wraps deflogit logfile out.log deflogging decorator func wraps func def args,kwargs log string func.name was called print log st...