本篇內(nèi)容主要講解“Python閉包函數(shù)的用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python閉包函數(shù)的用法”吧!
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的岑鞏網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
簡而言之, 閉包的特點(diǎn)就是內(nèi)部函數(shù)引用了外部函數(shù)中的變量。 在Python中,支持將函數(shù)當(dāng)做對(duì)象使用,也就是可以將一個(gè)函數(shù)當(dāng)做普通變量一樣用作另一個(gè)函數(shù)的參數(shù)和返回值。擁有此類特性的語言,一般都支持閉包。在一些語言中,在函數(shù)中可以(嵌套)定義另一個(gè)函數(shù)時(shí),如果內(nèi)部的函數(shù)引用了外部的函數(shù)的變量,則可能產(chǎn)生閉包。閉包可以用來在一個(gè)函數(shù)與一組“私有”變量之間創(chuàng)建關(guān)聯(lián)關(guān)系。在給定函數(shù)被多次調(diào)用的過程中,這些私有變量能夠保持其持久性。
閉包中被內(nèi)部函數(shù)引用的變量,不會(huì)因?yàn)橥獠亢瘮?shù)結(jié)束而被釋放掉,而是一直存在內(nèi)存中,知道內(nèi)部函數(shù)被調(diào)用結(jié)束。
閉包函數(shù)
閉:指的是定義在函數(shù)內(nèi)部的函數(shù)
比如手機(jī)是閉包函數(shù)(內(nèi)層函數(shù)),被手機(jī)包裝盒 (外層函數(shù)) 包裹起來,
手機(jī)可以使用包裝盒中的東西,內(nèi)層函數(shù)可以引用外層函數(shù)的名字。
閉包函數(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(): 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)淘寶
到此,相信大家對(duì)“Python閉包函數(shù)的用法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!