亚洲av+另类av,亚洲av 色,无码性午夜视频在线观看 ,少妇太爽了在线观看,亚洲av日韩av中文高清性色

首頁技術文章正文

Python培訓:裝飾器對帶有返回值的函數進行裝飾

更新時間:2022-10-17 來源:黑馬程序員 瀏覽量:

IT培訓班

  前面介紹的裝飾器,都是對不帶返回值的函數進行裝飾,如果要對有返回值的函數進行裝飾,那么該如何實現呢,先來看一段代碼:

>>> def test():
       return 'itheima'
>>> result = test()
>>> result
'itheima'

  上述代碼定義了一個test()函數,并使用result變量保存調用test函數后的返回值。此時,如果我們對帶有返回值的函數進行裝飾,那么,調用test函數后,函數的返回值還能輸出嗎?下面我們編碼來嘗試。

>>> def func(function_name):
        def func_in():
            function_name()
        return func_in
>>> @func
    def test():
        return 'itheima'
>>> result = test()
>>> result

  程序執(zhí)行后,沒有輸出任何內容,也就是說調用test()函數返回了None。這是因為,當使用@func對test()函數裝飾以后,test指向了func_in()函數,而func_in()函數本身是沒有返回值的,具體如圖7-10所示。

1665989701000_函數調用情況分析.jpg

  圖7-10 函數調用情況分析

  在圖7-10中,test指向了新的函數,原本test()函數的返回值被function_name()接收了。因此,如果想輸出“itheima”,需要使用return語句將調用后的結果返回。對裝飾函數進行修改,修改后的代碼如下所示:

def func(function_name):
    def func_in():
         return function_name()
    return func_in

  此時,再次調用test()函數,發(fā)現成功得到了返回值。

>>> result = test()
>>> result
'itheima'


分享到:
在線咨詢 我要報名
和我們在線交談!