溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python閉包函數(shù)的用法

發(fā)布時間:2021-08-12 10:46:21 來源:億速云 閱讀:149 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“Python閉包函數(shù)的用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Python閉包函數(shù)的用法”吧!


簡而言之, 閉包的特點就是內(nèi)部函數(shù)引用了外部函數(shù)中的變量。 在Python中,支持將函數(shù)當(dāng)做對象使用,也就是可以將一個函數(shù)當(dāng)做普通變量一樣用作另一個函數(shù)的參數(shù)和返回值。擁有此類特性的語言,一般都支持閉包。在一些語言中,在函數(shù)中可以(嵌套)定義另一個函數(shù)時,如果內(nèi)部的函數(shù)引用了外部的函數(shù)的變量,則可能產(chǎn)生閉包。閉包可以用來在一個函數(shù)與一組“私有”變量之間創(chuàng)建關(guān)聯(lián)關(guān)系。在給定函數(shù)被多次調(diào)用的過程中,這些私有變量能夠保持其持久性。

閉包中被內(nèi)部函數(shù)引用的變量,不會因為外部函數(shù)結(jié)束而被釋放掉,而是一直存在內(nèi)存中,知道內(nèi)部函數(shù)被調(diào)用結(jié)束。

閉包函數(shù)

閉:指的是定義在函數(shù)內(nèi)部的函數(shù)
比如手機是閉包函數(shù)(內(nèi)層函數(shù)),被手機包裝盒 (外層函數(shù)) 包裹起來,
手機可以使用包裝盒中的東西,內(nèi)層函數(shù)可以引用外層函數(shù)的名字。
閉包函數(shù)是 函數(shù)嵌套、函數(shù)對象、名稱空間與作用域 結(jié)合體。

基本形式:

def outer():
name ='egon'
def inner():
print('my name is %s' %name)
return inner
# print(outer())
f=outer()
f()

閉包的小應(yīng)用:

#爬蟲:模擬訪問百度
import requests
def get(url):
response = requests.get(url)
if response.status_code == 200:
print(response.text)
get('https://www.baidu.com/')
get('https://www.baidu.com/')
get('https://www.baidu.com/') #問題:每次訪問百度,都要調(diào)用一次,填一次地址
# 解決辦法:用閉包函數(shù)
def outter():
url = 'https://www.baidu.com/' #問題:把地址定死了,
def get():
response = requests.get(url)
if response.status_code == 200:
print(response.text)
return get
baidu = outter() #baidu --->get
baidu()
# 改進:
def outter(url):
def get():
response = requests.get(url)
if response.status_code == 200:
print(response.text)
return get
baidu = outter('https://www.baidu.com/') #baidu --->get
taobao = outter('https://www.taobao.com/') #taobao --->get
baidu() #專門調(diào)百度
taobao() #專門調(diào)淘寶

到此,相信大家對“Python閉包函數(shù)的用法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI