一、目標
學習python的裝飾器的用法,正式寫法
二、試驗平台
windows7 , python3.7
三、先看個例子
解析:比如原本有個方法xfunc,讓輸入年齡,列印年齡,但有個問題,年齡不可能為負數,怎麼辦?現在就要在不修改原有方法的情況下,去改變原來方法的輸出結果(輸入負數,結果都是0)
def xfunc(age):
print(f'你輸入的年齡是:')
def zhuangshiqi(xargs):
def zsqinner(age):
if age < 0:
age = 0
xfunc(age)
return zsqinner
kahn = zhuangshiqi(xfunc)
kahn(-5)
kahn(18)
'''輸出結果:
你輸入的年齡是:0
你輸入的年齡是:18
'''
四、正式版裝飾器的寫法舉例
def zhuangshiqi(xargs):
def zsqinner(age):
if age < 0:
age = 0
xargs(age)
return zsqinner
@zhuangshiqi
def xfunc(age):
print(f'你輸入的年齡是:')
xfunc(-10)
xfunc(-2)
xfunc(18)
'''你輸入的年齡是:0
你輸入的年齡是:0
你輸入的年齡是:18
'''
五、多引數正式版裝飾器寫法舉例:
def zhuangshiqi(xcanshu):
def zsq(*args, **kwargs):
print("裝飾器列印的東西-----(說明被裝飾了)")
xcanshu(*args, **kwargs)
return zsq
@zhuangshiqi
def say(name, age):
print(f"我的名字是,我今年歲了")
@zhuangshiqi
def sayhello(name):
print(f"the world i am coming. by ")
say("kahn", 18) # #執行被裝飾後的方法say
sayhello("kahn") # #執行被裝飾後的方法sayhello方法
'''執行結果:
裝飾器列印的東西-----(說明被裝飾了)
我的名字是kahn,我今年18歲了
裝飾器列印的東西-----(說明被裝飾了)
the world i am coming. by kahn
'''
kahn ok 2023年4月22日14:25:20 Python之裝飾器筆記
概述 用於管理和增強函式和類行為的 提供一種在函式或類定義中插入自動執行 的機制 特點 更明確的語法 更高的 可維護性 更好的一致性 編寫函式基礎 將函式賦給變數 將函式作為引數傳遞 函式巢狀及跨域訪問 函式定義裝飾器 通用性更好 1 函式定義裝飾器 2 通用性更好34 引數化裝飾器 5def ta...
Python之裝飾器學習筆記
裝飾器本質上是乙個python函式,其返回值也是乙個函式物件 作用 不修改原函式情況下,為已有函式新增新的功能。如插入日誌 效能測試 事務處理 快取 許可權校驗等場景。閉包函式 在函式內部定義乙個內嵌函式,內嵌函式引用了外部函式的變數,此時內嵌函式稱為閉包函式。閉包函式所引用的外部定義的變數被叫做自...
python學習筆記之裝飾器
def print msg print msg是外函式 msg i m 狂師 defprinter printer是巢狀函式 print msg return printer 返回巢狀函式printerdef func a,b def line n nonlocal a nonlocal用於宣告變數...