鼻屎炖蘑菇 发表于 2021-9-26 10:58:55

菜鸟求助内嵌函数问题

def fun1():
        x=5
        def fun2():
                x*=x
                return x
        return fun2()

>>> fun1()
Traceback (most recent call last):
File "<pyshell#51>", line 1, in <module>
    fun1()
File "<pyshell#50>", line 6, in fun1
    return fun2()
File "<pyshell#50>", line 4, in fun2
    x*=x
UnboundLocalError: local variable 'x' referenced before assignment
想问下为啥这里会报错呢 函数1规定x=5 函数2算出x=25后返回x 但是就报错 我看答案里加了个nonlocal 不知道加了这个Nonlocal意味着什么

逃兵 发表于 2021-9-26 11:01:51

nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。

jackz007 发表于 2021-9-26 11:10:43

本帖最后由 jackz007 于 2021-9-26 16:25 编辑

def fun1():
      x=5
      def fun2():
                nonlocal x#如果要对外部变量赋值,必须事先声明外部变量,否则,外部变量只读,不可以被赋值
                x*=x
                return x
      return fun2()
      当然,这样写,不用声明外部变量也可以
def fun1():
    x = 5
    def fun2():
      return x * x
    return fun2()
页: [1]
查看完整版本: 菜鸟求助内嵌函数问题