def outer():
x=1
def inner():
print(x)
return inner
fun=outer()
fun()
1.闭包现象:
一般函数的作用域分为L(局部作用域)>E(嵌套的父级函数的局部作用域)>G(全局变量)>B(系统固定模块里面的变量),但是在这个函数中,牵扯到内部函数(print x)里,对外在作用域的变量(x=1)进行了引用等同于嵌套的父级函数的局部作用域调用了局部作用域中的变量,我们称这种现象为闭包。
2.函数名加括号与不加括号的区别:
在这个函数中,返回的是inner,表示对函数的调用,而加括号outer()表示执行这个函数,所以这个函数执行inner()函数步骤为 fun=outer(),fun().