本文介紹Python其中一個功能--裝飾器
python中的類怎樣理解?只做簡單介紹, 可以幫助新手理解裝飾器, 沒有完整的裝飾器代碼
裝飾器本質上就是一個函數,在不修改源代碼,調用方法的前提下,用來給其他函數添加功能的函數
python和c++學哪個好,知識要求? ?:? 高階函數,內嵌函數
一個堪稱最簡單的函數:
deftest1():print('-----hello Jeden -----')
現在在不修改函數源代碼,不修改調用方法前提下,增加打印一個語句hello world,怎么加?
我們需要再次定義一個函數:而這個函數,就是一個最簡單的裝飾器:
1 defwarpper(func):2 definner():3 print('hello world')4 func()
5 return inner
warpper函數內嵌inner函數,最后返回inner函數,可是,這個函數怎么用呢?
你肯定已經看出來warpper函數參數是一個函數,在inner函數內部進行調用
所以,我們可以這樣用:
warpper(test1)
但是這樣肯定不行的,返回值是一個函數的引用,所以需要用一個變量名來存儲,然后加上小括號調用
func = warpper(test1)
func()
# -------------output( hello world \n hello Jeden )
這就完成了函數的裝飾, 但是調用方法改變了,原來的test1改成了func(),所以做以下修改:
func() = warpper #改成 test1 = warpper(test1)
func() # 改成test1()
已經完成了99%了,最后用python提供的語法糖就行了
類似于這樣? --? @function_name
#第一過程最終代碼展示
defwarpper(func):definner():print('hello world')
func()returninner
@warpperdeftest():print('hello jeden')
test()
這就是最簡單的裝飾器案例。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态