闭包就是指: 在函数内部在定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包。
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)