一、闭包
1、闭包的概念:
- 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包
2、闭包实例:
def test(number):
def test_in(number_in):
print('在test_in函数里面噢,number_in是%d' % number_in)
return number + number_in
return test_in
ret = test(20)
print(ret(100))
print(ret(200))
详细说一下这个代码的运行过程。首先这个函数满足了闭包的要求在内部再去定义一个函数,并且这个内部的函数用到了外部函数的局部变量,所以这是个闭包。在看一个函数的时候第一步永远都是先找函数的调用,没有调用的话一个函数压根跑不起来。按照代码从上到下执行的顺序,可以看到第一个调用test(20),这个test函数的调用(这个时候先不要看ret = 这个东西 就单看引用)。函数调用后开始执行外部的这个test函数,20这个参数传递给number这个形参,然后第一个函数就会开始运行,直到遇到return test_in这里,他会返回出内层函数的引用给到ret这个变量上。接着程序再往下走,遇到ret(100)这个调用,其实这里的ret调用也就是代表调用了内层函数test_in(number_in),100传递给了number_in这个参数。然后开始运行内层函数,在第一个print这里的%d就是代表number_in = 100。接着到内层函数return返回值这里,把这个返回值返回给函数调用者ret(100),print(ret(100))最后的结果就是120 。下面的这个print(ret(200))跟上面的就是同理了,这里就不做阐述了~
综上所述就是一个闭包的概念和详细过程了。