python進階之——閉包

閉包就是指: 在函數內部在定義一個函數,並且這個函數用到了外邊函數的變量,那麼將這個函數以及用到的一些變量稱之爲閉包。
在這裏插入圖片描述

def test (number):
	print("----1----")
	def test_in(number2):
		print("----2------")
		print(number+number2)
		
	print("---3----")
	return test_in
	
ret=test(100)
print('-'*30)
ret(1)
ret(100)
ret(200)

上面的這段代碼就是閉包的應用。
輸出:

------1------
------3------
----------------------------------
------2-----
101
------2-----
200
------2-----
300

程序解析:在執行ret=test(100),輸出了1和3可以看出,在調用閉包的外部函數時,程序並不會執行閉包內的函數,原因是test函數的返回值是test_in函數,所以他只是把test_in的函數體當成一個數據整體作爲test函數的返回並賦值給ret變量,所以接下來我們操作ret變量可以將它看成test_in函數來操作。這裏可以看出,閉包最大的作用就是當我們將函數用閉包的形式進行封裝,以後我們對該函數的操作他都是在基礎操作之上的進一步操作,比如這裏的初始給number=100,之後對閉包函數的任何操作都會在這個100的基礎上來進行。閉包函數對外部函數的變量的使用是一直持續的。

閉包的應用例子

問題:實現一次函數,可以通過x求任意y的值

def line_conf(a,b):
	def line(x):
		return a*x+b
	return line
line1=line_conf(5,4)
line2=line_conf(3,4)
line1(2)
line2(3)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章