本博文源於python基礎,主要實現閉包的應用,包含:延遲求值與泛型函數實現。這些都是應用嵌套函數持有定義環境變量來實現
閉包概述
閉包是指:python語言中將組成函數的語句和這些語句的執行環境一起打包到一起所得到的對象。當使用嵌套函數時,閉包將捕獲內部函數執行所需的整個環境。嵌套函數可以使用被嵌套函數中的任何變量,不需要聲明
例子:閉包實現延遲求值
所謂閉包的一種應用場景就是嵌套函數,返回嵌套函數對象,我們用變量去借它,然後變量就變成函數對象,在我們想讓其執行的時候再調用它,就實現了延遲求值的現象。
實現效果
實現代碼
def delay_fun(x, y):
def caculator():
return x + y
return caculator
if __name__ == '__main__':
print('調用函數,卻不求值:....')
mysum = delay_fun(3, 4)
print('再次調用,讓其求值:...')
print(mysum())
例子:閉包實現泛型函數
所謂泛型函數就是指一次性實現一系列同類函數,然後我們對其進行求值。這也就是應用嵌套函數實現持有定義環境變量的特性來完成的功能。
實現效果
實現代碼
def line(a, b):
def aline(x):
return a*x+b
return aline
if __name__ == '__main__':
line23 = line(2, 3)
line50 = line(5, 0)
print('調用line23(4):', line23(4))
print('調用line50(2):', line50(2))