Python FAQ
1、在函数a中又定义了函数sum,内部函数sum可以引用外部函数a的参数n,不能这样写n=n+1,两个会出错,这样写s=s+n可以
解决:
def a(): n = 1 def sum(): nonlocal n n=n+1 return n return sum f=a() print(f(),f(),f())
做些笔记:
1.内部函数一般无法修改外部函数的参数
2.想要修改需要声明 nonlocal
3.内部函数可以修改外部list中的元素
4.对于a来说n是局部变量,对于sum来说n是非全局的外部变量。内部函数若想修改外部函数中的外部变量,可以用nonlocal声明。而如果只是使用外部函数的外部变量,是不会报错的。
5.简单来说的话如果只是调用的话不需要额外的做出声明。