1、在函数a中又定义了函数sum,内部函数sum可以引用外部函数a的参数n,不能这样写n=n+1,两个会出错,这样写s=s+n可以

Python FAQ

解决:

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.简单来说的话如果只是调用的话不需要额外的做出声明。

 

相关文章:

  • 2021-12-26
  • 2021-09-16
  • 2021-05-02
  • 2021-06-17
  • 2022-02-05
猜你喜欢
  • 2021-12-06
  • 2021-08-18
  • 2022-12-23
  • 2021-12-17
相关资源
相似解决方案