您好,登錄后才能下訂單哦!
閉包函數(shù):
閉:指的是定義在函數(shù)內(nèi)部的函數(shù)
比如手機(jī)是閉包函數(shù)(內(nèi)層函數(shù)),被手機(jī)包裝盒 (外層函數(shù)) 包裹起來,
手機(jī)可以使用包裝盒中的東西,內(nèi)層函數(shù)可以引用外層函數(shù)的名字。
閉包函數(shù):定義在函數(shù)內(nèi)部的函數(shù),并且該函數(shù)包含對(duì)外部函數(shù)作用域中名字的引用,該函數(shù)就稱為閉包函數(shù)。
注意:該函數(shù)的作用域在定義階段就定義死了,與調(diào)用位置無關(guān)
閉包函數(shù)是 函數(shù)嵌套、函數(shù)對(duì)象、名稱空間與作用域 結(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():鄭州婦科醫(yī)院 http://www.zyfuke.com/
response = requests.get(url)
if response.status_code == 200:
print(response.text)
return get
baidu = outter() #baidu --->get
baidu()
# 改進(jìn):
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)淘寶
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。