日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

在python中、对于函数定义代码的理解_python中如何理解装饰器代码?

發(fā)布時間:2023/12/10 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在python中、对于函数定义代码的理解_python中如何理解装饰器代码? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

長文預警,【最淺顯易懂的裝飾器講解】

能不能專業(yè)地復制題目?配上代碼,問題分段。

我來給提主配上問題的代碼。

正式回答:

1:如何理解return一個函數(shù),它與return一個值得用法區(qū)別在哪?

敲黑板,"python中,一切都是對象"。

值是對象,函數(shù)也是對象。

上圖,num是int類的實例對象,funcobj是function類的一個實例對象。

所以返回一個值和返回一個函數(shù)并沒有什么不同,本質都是返回一個對象。

但是由于值類型和函數(shù)類型的使用方法不同,值直接使用,函數(shù)需要加上()調(diào)用。

2.在wrapper函數(shù)中,為什么能返回一個在wrapper函數(shù)中沒有定義的func函數(shù)?

先更正你的提問,wrapper函數(shù)并沒有返回func函數(shù),而是返回func函數(shù)的運行結果。

因此,作為參數(shù)傳遞給wrapper函數(shù)之后,wrapper當然可以調(diào)用func函數(shù)。

3.怎么理解在log中作為參數(shù)存在的func,在wrapper函數(shù)中成了函數(shù)?

相信你已經(jīng)明白用對象的眼光看待,因此和問題2其實是一個問題。

4.這對log函數(shù)本身的使用有哪些影響,或者說當A函數(shù)的參數(shù)是一個函數(shù)時,如何使用A函數(shù)?

什么是裝飾器?裝飾器就是裝飾函數(shù)的!

問題圖中的log函數(shù)就是為了在不更改func的情況下,每次調(diào)用func之前,都會執(zhí)行

想到了什么?日志!沒錯!

那么,你可能會問,為什么不在func函數(shù)print日志呢?

問得實在太好了!

1:如果func函數(shù)是你寫的,那么你當然可以這么做;如果不是你寫的,你這么做試試?

比如在系統(tǒng)open函數(shù)的最前面加上print()....

2:如果你有n個函數(shù),在執(zhí)行的前后都會執(zhí)行一些類似的代碼。

以下是2個不同的寫法

顯然右邊代碼量更少,更容易維護,但是還有更好的寫法。

請注意,不修改add函數(shù)和sub函數(shù)的情況下,就為這2個不同的函數(shù)的執(zhí)行前后增加了新的功能。

把add函數(shù)和sub函數(shù)裝飾得更強大了。

上述代碼后半段仍有改進的空間。

看,經(jīng)過@decorator裝飾add和sub函數(shù)之后,使用時更方便了。

細心的朋友,相信已經(jīng)注意到了add函數(shù)和sub函數(shù)的參數(shù)不一樣的。

沒有錯,我是故意的。

奧妙在于*args 和**kwgs,可變參數(shù)。

上圖是對指定參數(shù)、可變參數(shù)*args、可變**kwgs的示例。

對于裝飾器來說,不需要指定參數(shù),因此只需*args和**kwgs即可以表示。

如果對你有幫助,請點贊支持。

總結

以上是生活随笔為你收集整理的在python中、对于函数定义代码的理解_python中如何理解装饰器代码?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。