1. 程式人生 > 程式設計 >Python帶引數的裝飾器執行原理解析

Python帶引數的裝飾器執行原理解析

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

上程式碼:

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 " {arg} " 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帶引數的裝飾器執行原理解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。