日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前置內容

為了更容易理解閉包,在說閉包之前,講一下兩個概念:作用域嵌套函數

  • 作用域

作用域是變量能被訪問的范圍,定義在函數內的變量是局部變量,局部變量的作用范圍只能在函數內部,它不能在函數被外引用。

定義在模塊最外層的變量是全局變量,它是全局范圍可見的,所以在函數體內部也可以讀取到全局變量。

Python函數式編程,Python閉包

 

  • 嵌套函數 在函數內部,再定義函數,里面的函數稱之為嵌套函數
Python函數式編程,Python閉包

 

對于嵌套函數,它可以訪問到其外層作用域中定義的局部變量,如代碼示例中的變量 msg。

局部變量脫離函數作用域是無法被訪問,閉包使局部變量脫離函數作用域,能夠被引用訪問。

Python函數式編程,Python閉包

 

什么是閉包

接下來說一下,什么是閉包?

閉包是一類特殊的函數,在一個函數的作用域內定義一個新函數(嵌套函數),且這個函數中的變量使用了外部函數的局部變量,那么這個函數就是一個閉包。

閉包本質是一個函數,記錄并保存當前函數執行狀態,相關示例如下:

Python函數式編程,Python閉包

 

閉包原理

Python 一切皆對象,即函數也是對象,所有函數都有一個 _closure_屬性,如果這個函數是一個閉包,那么_closure_屬性值是一個元組對象,這個元組包含了閉包中的自由變量。

Python函數式編程,Python閉包

 

閉包,一個應用示例

閉包可以根據外部作用域的局部變量值來得到不同的結果,例如我們修改外部變量,閉包根據這個變量展現出不同的功能

以下例子就是根據不同的刷選條件,得到不同得分:

Python函數式編程,Python閉包

 

閉包使用注意

在閉包中是不能修改外部作用域的局部變量:

Python函數式編程,Python閉包

 

雖然在閉包里給num變量賦值,但其num變量跟外部函數中的變量num是兩個獨立變量

另一個閉包使用錯誤

Python函數式編程,Python閉包

 

這段程序的本意是在每次調用閉包函數時都對變量n進行+1的操作,這樣是不允許的

代碼改進:

Python函數式編程,Python閉包

 

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定