Python中的閉包
1、閉包概念
閉包在函數(shù)中提出的概念,簡單來說就是一個函數(shù)定義中引用了函數(shù)外定義的變量,并且該函數(shù)可以在其定義環(huán)境外被執(zhí)行。這樣的一個函數(shù)我們稱之為閉包。實(shí)際上閉包可以看做一種更加廣義的函數(shù)概念。因?yàn)槠湟呀?jīng)不再是傳統(tǒng)意義上定義的函數(shù)。
閉包這個概念不僅僅只有在Python中存在,在任何一個編程語言中都幾乎存在。
2、閉包條件
閉包的條件:
- 外部函數(shù)中定義了內(nèi)部函數(shù)
- 外部函數(shù)是有返回值
- 返回值是:內(nèi)部函數(shù)
- 內(nèi)部函數(shù)還引用了外部函數(shù)的變量
格式如下所示:
def 外部函數(shù)():
...
def 內(nèi)部函數(shù)():
...
return 內(nèi)部函數(shù)
示例代碼:
def func():
a = 100
def inner_func():
b = 200
print(a, b)
return inner_func
x = func()
print(x) # <function func.<locals>.inner_func at 0x0000021704CD9620>
x() # 100 200
# 這樣就可以直接調(diào)用inner_func函數(shù),如果return不返回一個內(nèi)部函數(shù)的話是不會有任何輸出的
3、閉包完成計(jì)數(shù)效果
使用閉包還可以完成計(jì)數(shù)器的效果
def generate_count():
container = [0]
def add_one():
container[0] += 1
print(f"這是第{container[0]}次調(diào)用")
return add_one
count = generate_count()
count() # 這是第1次調(diào)用
count() # 這是第2次調(diào)用
count() # 這是第3次調(diào)用
4、閉包的缺點(diǎn)及作用
閉包的缺點(diǎn)如下所示:
- 作用域沒有那么直觀
- 因?yàn)樽兞坎粫焕厥账杂幸欢ǖ膬?nèi)存占用問題。
閉包的作用如下所示:
- 可以使用同級的作用域
- 讀取其他元素的內(nèi)部變量
- 延長作用域
到此這篇關(guān)于Python中的閉包的文章就介紹到這了,更多相關(guān)Python閉包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python爬蟲獲取AliExpress商品詳情的詳細(xì)步驟
速賣通(AliExpress)是全球知名的在線零售平臺,隸屬于阿里巴巴集團(tuán),下面給大家介紹如何使用Python進(jìn)行這一操作的詳細(xì)步驟,感謝的朋友一起看看吧2024-12-12
Python requests的SSL證書驗(yàn)證方式
這篇文章主要介紹了Python-requests的SSL證書驗(yàn)證方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
使用Matplotlib創(chuàng)建漂亮的數(shù)據(jù)可視化圖表
在 Python 中,Matplotlib 是一個強(qiáng)大而靈活的工具,可以用來創(chuàng)建各種類型的數(shù)據(jù)可視化圖表,本文給大家介紹了如何使用Matplotlib創(chuàng)建漂亮的數(shù)據(jù)可視化圖表,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-04-04
Python中selenium_webdriver下拉框操作指南
selenium 雖然過了這么多年,但是到目前為止依然是比較流行的自動化框架了,下面這篇文章主要給大家介紹了關(guān)于Python中selenium_webdriver下拉框操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01
python實(shí)現(xiàn)修改xml文件內(nèi)容
這篇文章主要介紹了python實(shí)現(xiàn)修改xml文件內(nèi)容,XML 指可擴(kuò)展標(biāo)記語言,是一種標(biāo)記語言,是從標(biāo)準(zhǔn)通用標(biāo)記語言(SGML)中簡化修改出來的2022-07-07

