Python 閉包函式說明
在 Python 中很多地方都會使用到閉包,那麼究竟什麼叫做閉包呢? |
在一些語言中,在函式中可以(巢狀)定義另一個函式時,如果內部的函式引用了外部的函式的變數,則可能產生閉包。閉包可以用來在一個函式與一組“私有”變數之間建立關聯關係。在給定函式被多次呼叫的過程中,這些私有變數能夠保持其永續性。
簡而言之, 閉包的特點就是內部函式引用了外部函式中的變數。 在Python中,支援將函式當做物件使用,也就是可以將一個函式當做普通變數一樣用作另一個函式的引數和返回值。擁有此類特性的語言,一般都支援閉包。
閉包中被內部函式引用的變數,不會因為外部函式結束而被釋放掉,而是一直存在記憶體中,知道內部函式被呼叫結束。
閉包函式
閉:指的是定義在函式內部的函式
比如手機是閉包函式(內層函式),被手機包裝盒 (外層函式) 包裹起來,
手機可以使用包裝盒中的東西,內層函式可以引用外層函式的名字。
閉包函式是 函式巢狀、函式物件、名稱空間與作用域 結合體。
基本形式:
def outer(): name ='egon' def inner(): print('my name is %s' %name) return inner # print(outer()) f=outer() f()
閉包的小應用:
#爬蟲:模擬訪問百度 import requests def get(url): response = requests.get(url) if response.status_code == 200: print(response.text) get(') get(') get(') #問題:每次訪問百度,都要呼叫一次,填一次地址 # 解決辦法:用閉包函式 def outter(): url = ' #問題:把地址定死了, 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(') #baidu --->get taobao = outter(') #taobao --->get baidu() #專門調百度 taobao() #專門調淘寶
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2670362/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 理解Python函式閉包Python函式
- Python基礎之閉包函式Python函式
- 函式閉包函式
- python中encode和decode函式說明Python函式
- python 關於 函式物件與閉包Python函式物件
- go 閉包函式Go函式
- js函式閉包JS函式
- 回撥函式 與 函式閉包函式
- 閉包函式(匿名函式)的理解函式
- 函式閉包機制函式
- JS函式表示式——函式遞迴、閉包JS函式遞迴
- 函式物件、裝飾器、閉包函式函式物件
- Python包的匯入說明Python
- python3:urllib.request 的主要函式說明Python函式
- python基礎知識之函式初階——閉包Python函式
- scapy函式 IP() 使用說明函式
- PHP 風險函式說明PHP函式
- Vector容器主要函式說明函式
- 『無為則無心』Python函式 — 35、Python中的閉包Python函式
- Java @FunctionInterface函式式介面使用說明JavaFunction函式
- rust十三.1、匿名函式(閉包)Rust函式
- 3. 匿名函式與閉包函式
- JavaScript4:函式和閉包JavaScript函式
- 淺談匿名函式和閉包函式
- 立即執行函式(IIFE)&&閉包函式
- python closure閉包 lambda表示式Python
- Python學習之路26-函式裝飾器和閉包Python函式
- apolloxlua標準庫require函式說明UI函式
- jQuery - 函式 $.ajaxSetup 的說明和使用jQuery函式
- 閉包函式,裝飾器詳解函式
- 1.13 JavaScript4:函式和閉包JavaScript函式
- PHP新特性之閉包、匿名函式PHP函式
- js閉包與封閉函式與其他知識點JS函式
- Kotlin 之高階函式與Lambda表示式與閉包Kotlin函式
- 13. 閉包函式與裝飾器函式
- js中的函式巢狀和閉包JS函式巢狀
- .NET併發程式設計-函式閉包程式設計函式
- 課時20:內嵌函式和閉包函式