(相關資料圖)
裝飾器是 Python 中非常有用的語法特性,可以用于包裝或者修改函數的行為。有時候我們希望給裝飾器添加參數,以便于在裝飾器內部使用,那么這時候就需要使用帶參數的裝飾器。常用的兩種帶參數裝飾器的寫法如下:
在裝飾器函數外層再套一個函數,用來接收和處理裝飾器的參數。
def decorator_with_args(arg1, arg2, arg3): def wrapper(func): def inner_wrapper(*args, **kwargs): print("Decorator arguments:", arg1, arg2, arg3) return func(*args, **kwargs) return inner_wrapper return wrapper @decorator_with_args("Hello", "World", 42) def my_function(arg1, arg2): print("Function arguments:", arg1, arg2) my_function("Hi", "Tom")
使用一個裝飾器函數來實現裝飾器的參數傳遞,然后再返回一個函數來完成真正的裝飾。
def decorator_with_args(arg1, arg2, arg3): def real_decorator(func): def wrapper(*args, **kwargs): print("Decorator arguments:", arg1, arg2, arg3) return func(*args, **kwargs) return wrapper return real_decorator @decorator_with_args("Hello", "World", 42) def my_function(arg1, arg2): print("Function arguments:", arg1, arg2) my_function("Hi", "Tom")
以上兩種寫法都可以實現帶參數的裝飾器。第一種寫法中,外層套一個函數來處理裝飾器參數,然后再返回內層裝飾器函數來實現真正的裝飾器;第二種寫法中,使用一個裝飾器函數來接收和處理參數,然后再返回一個內部函數來完成真正的裝飾。
上一篇:乙醇鈉商品報價動態(2023-08-09)
下一篇:最后一頁
凡本網注明“XXX(非汪清新聞網)提供”的作品,均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和其真實性負責。
【盤面】周三滬深兩市雙雙低開,不少權重板塊還算平穩,但未阻大盤低開
2023-08-09 16:19
支付寶賬戶激活步驟:1、打開“支付寶”,點擊“注冊賬號”。2、輸入要
2023-08-09 15:40
報道介紹,考慮到“卡努”貫穿朝鮮半島可能帶來較大損失,以及參加第25
2023-08-09 15:11
愛美客(300896)08月09日在投資者關系平臺上答復了投資者關心的問題。
2023-08-09 14:30
可以買貴的,不能買貴了
2023-08-09 14:09
2023年08月09日訊:點擊查看>>>2203四川德陽市教育局市直屬學??己苏?/p>
2023-08-09 13:21
中郵證券有限責任公司王磊,賈佳宇近期對東方電纜進行研究并發布了研究
2023-08-09 12:30
比賽結束后,不少網友都吐槽AD差距,主要是第四局Uzi前期拿到了3個人頭
2023-08-09 11:40
EA已確認將于今年晚些時候關閉《孤島危機3》《但丁地獄》《死亡空間2》
2023-08-09 11:22
今年上海書展將于8月16日至22日舉辦。
2023-08-09 11:02