Python 關於帶引數的裝飾器的理解

2022-05-23 06:15:11 字數 1108 閱讀 2852

關於裝飾器的理解,特別像《盜夢空間》中的進入夢境和從夢境出來的過程,一層一層的深入夢境,然後又一層一層的返回,被帶入夢境的是被裝飾的函式,裝飾器就是使人入夢的工具。

上**:

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...