python-裝飾器-被裝飾函式帶參(入參*args、**kwargs學習)
阿新 • • 發佈:2022-05-09
import time # 裝飾函式 def show_time(func): def inner(*args,**kwargs): begin_time = time.time() func(*args,**kwargs) end_time = time.time() print('伺服器響應時間:',end_time-begin_time) return inner # 被裝飾函式,有入參 @show_time def foo(test_case_name): print(test_case_name) time.sleep(1) # foo = show_time(foo) foo('有入參')
一、*args
【1】*args:表示位置引數,入參型別是列表或者元祖,傳送一個非鍵值對的可變數量的引數列表給函式
【2】*:會把傳入的多個引數打包成元祖,賦值給形參args
# *args:傳送一個非鍵值對的可變數量的引數列表給函式 # * :會把傳入的多個引數打包成元祖,賦值給形參args def fun1(*args): print(args) fun1(1) # 1 fun1(1,2) # 1 2 fun1((1,2),1) # (1,2) 1 fun1([1,2],2) # [1,2] 2 fun1('aaaaaa') # fun1(a=1,b=2) # 關鍵字引數不行,會報錯
二、**kwargs
【1】**kwargs:傳送一個鍵值對的可變數量的引數列表給函式
【2】**:會把傳入的多個鍵值對打包成字典,賦值給kwargs
# **kwargs:傳送一個鍵值對的可變數量的引數列表給函式
# ** :會把傳入的多個鍵值對打包成字典,賦值給kwargs
def fun2(**kwargs):
print(kwargs)
fun2(a=1) # {'a': 1}
fun2(a=1,b=2) # {'a': 1, 'b': 2}