Python基础之闭包
Python基礎(chǔ)之閉包
一.閉包的定義:
在一個(gè)函數(shù)的內(nèi)部 ,再定義一個(gè)函數(shù)(內(nèi)部函數(shù)) 。這個(gè)內(nèi)部函數(shù)引用了外部函數(shù)的變量 ,并且外部函數(shù)返回這個(gè)內(nèi)部函數(shù) ,我們把這個(gè)使用外部函數(shù)變量的內(nèi)部函數(shù)稱為閉包 。
簡(jiǎn)而言之,閉包就是能夠讀取外部函數(shù)內(nèi)的變量的函數(shù)。
例如 :
def f1(): # f1外部函數(shù) n = 999 # n:外部函數(shù)的變量 def f2(): # 內(nèi)部函數(shù) print(n) # f2中引用f1的變量 return f2 # 外部函數(shù)f1返回內(nèi)部函數(shù)f2,函數(shù)f2即是閉包#調(diào)用法一f1()()# 調(diào)用法二# result=f1()# result()形成閉包的兩個(gè)條件:
- 函數(shù)的返回值必須是被包函數(shù)對(duì)象(函數(shù)名)
- 閉包中必須引用了外層函數(shù)作用域內(nèi)的變量或者形參
二.閉包的用途
①可以讀取函數(shù)內(nèi)部的變量
②將一些變量的值始終保存到內(nèi)存中
1.讀取函數(shù)內(nèi)部的變量
在一般情況下,在函數(shù)外部我們是不能訪問(wèn)到函數(shù)內(nèi)部的變量的。但是