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

歡迎訪問 生活随笔!

生活随笔

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

python

外部函数能修改闭包内的变量_Python函数式编程,Python闭包

發布時間:2023/12/10 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外部函数能修改闭包内的变量_Python函数式编程,Python闭包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前置內容

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

  • 作用域

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

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

  • 嵌套函數 在函數內部,再定義函數,里面的函數稱之為嵌套函數

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

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

什么是閉包

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

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

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

閉包原理

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

閉包,一個應用示例

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

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

閉包使用注意

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

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

另一個閉包使用錯誤

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

代碼改進:

最后

接下來會有更加精彩的內容,不想錯過的話,可以關注我,第一時間獲取更新!

最后,投幣收藏轉發來一波,我們下期不見不散~

總結

以上是生活随笔為你收集整理的外部函数能修改闭包内的变量_Python函数式编程,Python闭包的全部內容,希望文章能夠幫你解決所遇到的問題。

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