python在函数内部可以嵌套声明函数,感觉这功能没必要,增加了代码复杂度,还不如直接和C++一样在函数外部声明一个函数,python可以使函数的局部变量作为嵌套函数的全局变量使用。例如下面的代码:
def fun1():
num = 100
def fun2():
nonlocal num
num = 101
print("嵌套函数的num = %d" % num)
fun2() #在fun1内调用fun2
print("第一层的num = %d" % num)
#测试
fun1()
在fun1内嵌套定义了函数fun2, fun1的变量num在fun2内用nonlocal声明后,num在函数fun1的作用域内就是全局变量了。
输出结果:
嵌套函数的num = 101
第一层的num = 101
根据结果可知道局部变量num的值被嵌套的函数修改了,其实这在C++中做引用传值也可以实现。