python基础装饰器_Python基础 装饰器及练习
Python視頻教程講解裝飾器
推薦免費:Python視頻教程
裝飾器概念
裝飾器,說白了,就是用來裝飾函數的一個函數。
裝飾器遵循 開放封閉原則、依賴倒置原則,這兩個原則概念,自行百度下,
裝飾器長啥樣def wrapper(f):
def inner(*args,**kwargs):
ret = f(*args,**kwargs)
return ret
return inner
上述代碼是裝飾器的固定格式
調用裝飾器@wrapper # 簡稱語法糖
def test():
print(1)
test()
@wrapper是調用裝飾器,相比于wrapper(test()),更節省代碼,更美觀??赡苣憧吹竭@里就不懂了,為啥要@wrapper? 調用函數不是wrapper()?
其實吧,你要我說,我也不知道,我就知道,這樣寫更簡單。直接在要裝飾的函數前@wrapper即可
以一個小例子快速看懂裝飾器def wrapper(f):
print(2)
def inner(*args,**kwargs):
print(3)
ret = f(*args,**kwargs)
print(4)
return ret
return inner
@wrapper
def test():
print(1)
test()
@wrapper == wrapper(test()) 相當于調用裝飾器函數,直接用語法糖@wrapper會更簡便
*args是匹配以位置傳參的參數,**kwargs是匹配按關鍵字傳參的參數,這樣就可以接收所有參數。
wrapper(test)接收值傳給f,在內圈函數中,ret = f(*args,**kwargs)這函數是執行裝飾的函數的代碼。再返回執行的值,最后返回這個函數。此代碼的執行結果為:2
3
1
4
如下圖所示
由此可見
函數inner中,print(3)是執行裝飾函數前的操作, print(4)是執行裝飾函數后的操作。
理解起來可能有些困難。所以最好還是動手試試。
基礎小練習'''1. 默寫裝飾器固定格式
2. 寫一個加減功能的裝飾器
'''
總結
以上是生活随笔為你收集整理的python基础装饰器_Python基础 装饰器及练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: owdcloud mysql_MySQL
- 下一篇: python导出csv不带引号的句子_不