1、闭包

如果一个函数中,定义了另一个函数,那个函数使用了外面函数的变量,并且外面的函数返回了里面这个函数的引用,那么称为里面的这个函数为闭包,例如下

注意闭包在返回的时候是不加括号的,不加括号表示返回函数体,加了括号是返回执行后的函数值

2、闭包执行顺序,使用用途

使用ret去接收外面的函数返回的值得时候,这个ret收到的是里面的这个函数

如果需要执行里面的函数,只需要在接收对象后面加一对括号即可,因为接收到的是函数,执行函数只需要加括号就行。

关于外部函数,如果外部的函数需要执行另外的代码,必须写在闭包的前面,因为有return语句

3、使用闭包实现计算器

如果不使用闭包的话,calculator()需要穿3个数据,两个数和一个操作数,如果你只需要进行相加操作的话,那么需要调用很多次calculator()函数,使用闭包之后,calculator()只需要调用一次即可

4、nonlocal关键字

如果想要在闭包中修改外面函数的变量,使用nonlocal关键字,来把这个变量表示为外面函数的变量,和global很类似