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

歡迎訪問 生活随笔!

生活随笔

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

python

python基础教程:python中@的用法

發布時間:2025/3/20 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基础教程:python中@的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@是一個裝飾器,針對函數,起調用傳參的作用。

有修飾和被修飾的區別,‘@function’作為一個裝飾器,用來修飾緊跟著的函數(可以是另一個裝飾器,也可以是函數定義)。

代碼1

def funA(desA):print("It's funA")def funB(desB):print("It's funB")@funA def funC():print("It's funC")

結果1

It's funA

分析1

@funA 修飾函數定義def funC(),將funC()賦值給funA()的形參。

執行的時候由上而下,先定義funA、funB,然后運行funA(funC())。

此時desA=funC(),然后funA()輸出‘It’s funA’。

代碼2

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def funA(desA):print("It's funA")def funB(desB):print("It's funB")@funB @funA def funC():print("It's funC")

結果2

It's funA It's funB

分析2

@funB 修飾裝飾器@funA,@funA 修飾函數定義def funC(),將funC()賦值給funA()的形參,再將funA(funC())賦值給funB()。

執行的時候由上而下,先定義funA、funB,然后運行funB(funA(funC()))。

此時desA=funC(),然后funA()輸出‘It’s funA’;desB=funA(funC()),然后funB()輸出‘It’s funB’。

代碼3

def funA(desA):print("It's funA")print('---')print(desA)desA()print('---')def funB(desB):print("It's funB")@funB @funA def funC():print("It's funC")

結果3

It's funA < function funC at 0x000001A5FF763C80 > It's funC It's funB

分析3

同上,為了更直觀地看參數傳遞,打印desA,其傳的是funC()的地址,即desA現在為函數desA()。

執行desA()即執行funC(),desA=desA()=funC()。

代碼4

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def funA(desA):print("It's funA")def funB(desB):print("It's funB")print('---')print(desB)@funB @funA def funC():print("It's funC")

結果4

It's funA It's funB None

分析4

上面將funC()作為參數傳給funA,那么funA(funC())怎么傳給funB()呢?打印desB,發現并沒有參數傳遞。

是否可以理解為當‘裝飾器’ 修飾 ‘裝飾器’時,僅是調用函數。

總結

以上是生活随笔為你收集整理的python基础教程:python中@的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。