Python筆記之裝飾器 複雜版正式版

2021-09-19 10:56:22 字數 1506 閱讀 4014

一、目標

學習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用於宣告變數...