“閉包”這個詞語相信大多數學過程式設計的同學並不陌生,但是有時候理解起來還是有一定難度。先看定義:
閉包是由函式和與其相關的引用環境組合而成的實體。比如參考資源中就有這樣的的定義:在實現深約束時,需要建立一個能顯式表示引用環境的東西,並將它與相關的子程式捆綁在一起,這樣捆綁起
來的整體被稱為閉包。
python閉包(closure)其實並不是什麼很複雜的東西。
通俗的講就是:如果在一個內部函式里,對在外部作用域(但不是在全域性作用域)的變數進行引用,那麼內部函式就被認為是閉包(closure)。它只不過是個“內層”的函式,由一個名字(變數)來指代,而這個名字(變數)對於“外層”包含它的函式而言,是本地變數。
看到這裡或許你依然不明白什麼是閉包,沒關係,看完下面的小例子你一定會明白!
#! /usr/bin/env python
# coding=utf-8
# http://www.pythontab.com
#定義一個函式
def plus(number):
#在函式內部再定義一個函式,其實這個裡面的函式就被認為是閉包
def plus_in(number_in):
#這裡列印一下number_in變數,以便大家可以更清楚傳進來的變數時哪一個
print str(number_in) + "\r\n"
return number+number_in
#其實這裡返回的就是閉包的結果
return plus_in
#給plus函式賦值,這個20就是給引數number
v1=plus(20)
print v1(100) #注意這裡的100其實給引數number_in
執行結果:
100
120
注意:100是print str(number_in) + "\r\n"列印的結果哦
講到這裡大家明白什麼是閉包了吧~~
原創文章,轉載請註明出處!
python閉包詳解(例項)
相關文章
- 閉包詳解一
- JavaScript閉包詳解JavaScript
- Python程式和執行緒例項詳解Python執行緒
- Javascript—閉包詳解(3)JavaScript
- 閉包學習 1--例項分析 ComposerStaticInitxx::getInitializer
- 元件例項 $el 詳解元件
- Go 語言閉包詳解Go
- javascript中的閉包closure詳解JavaScript
- 草根學Python(十五) 閉包(解決一個需求瞭解閉包流程)Python
- CSS例項詳解:Flex佈局CSSFlex
- EventBus詳解及簡單例項單例
- Spring事務管理(詳解+例項)Spring
- 閉包函式,裝飾器詳解函式
- Python訪問小程式簡單方法程式碼例項詳解Python
- 詳解Python物件導向程式設計之類、例項、方法Python物件程式設計
- 設計模式例項講解 - 開放封閉設計模式
- PHP7 新增功能詳解(例項)PHP
- 50個典型電路例項詳解
- MySQL共享鎖:使用與例項詳解MySql
- python單例的使用詳解Python單例
- Python - poetry(3)配置項詳解Python
- css麵包屑例項CSS
- Python裝飾器例項講解(三)Python
- Oracle minus用法詳解及應用例項Oracle
- 正規表示式分組例項詳解
- python socket例項Python
- python例項1Python
- Python高階--閉包Python
- Python技法4:閉包Python
- mongodb關閉資料庫例項MongoDB資料庫
- [Python 基礎] Python 例項方法、靜態方法和類方法詳解 (包含區別和用法)Python
- axios模擬GET請求例項及詳解iOS
- Navigation問題詳解——Fragment建立新的例項NavigationFragment
- 例項詳解 Java 死鎖與破解死鎖Java
- JavaScript閉包原理與用法例項JavaScript
- 閉包詳解二:JavaScript中的高階函式JavaScript函式
- Python例項集錦Python
- python鬧鐘例項Python
- python100例項Python