python中初級裝飾器總結
阿新 • • 發佈:2018-07-19
http 目前 pri span 做的 輸出 rgs bsp col
打印 args 與 *args 的區別
1 #打印時區別 2 def outer(*args, **kwargs): 3 print(args) #輸出結果:(1, 2, 3, 4) 4 print(*args) #輸出結果:1 2 3 4 5 6 outer(1,2,3,4)
1 #函數調用時區別 2 def outer(*args, **kwargs): 3 print(args) 4 print(*args) #也是調用函數,調用的是print函數 5 6 outer([1,2,3,4]) #輸出結果:([1, 2, 3, 4],) 7 # [1, 2, 3, 4] 8 9 outer(*[1,2,3,4]) #輸出結果:(1, 2, 3, 4) 10 # 1 2 3 4 11 #等價於outer(1,2,3,4),以及outer(*(1,2,3,4))
規律
1 def outer(*args, **kwargs): 2 print(args) 3 print(*args) #也是調用函數,調用的是print函數 4 def inner(*args): 5 print(‘inner:‘,args) 6 inner(*args) 7 8 outer(1,2,3,4) #輸出結果:(1, 2, 3, 4) 9 # # 1 2 3 4 10 # # inner: (1, 2, 3, 4) 在被傳參時聚合
總體
def wrapper(func):def inner(*args,**kwargs): print(‘在被裝飾的函數執行之前做的事‘) ret = func(*args,**kwargs) print(‘在被裝飾的函數執行之後做的事‘) return ret return inner @wrapper def func(day): print(‘python目前是排名第{}的語言‘.format(day)) return ‘所以我們一定要堅持學習python‘ ret = func(4) print(ret)
python中初級裝飾器總結