欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python UnboundLocalError: local variable 'xxx' referenced before assignment

程序员文章站 2024-02-17 14:21:40
...

目录:

UnboundLocalError: local variable ‘xxx’ referenced before assignment

参考链接地址:地址

解析:

UnboundLocalError: local variable ‘xxx’ referenced before assignment

在函数外部已经定义了变量n,在函数内部对该变量进行运算,运行时会遇到了这样的错误:

主要是因为没有让解释器清楚变量是全局变量还是局部变量。

错误案例:

+= 错误案例

  1. 正确的:

        l=1
        def add():
            return l+1
    
        print(add())
  2. 错误的:

    l=1
    def add():
        l+=1 # 进行赋值操作了,所以l被转换成局部变量了
        return l
    
    print(add())
    l="abc"
    def add():
        return l.upper()# 为什么list 调用 append可以, string 调用方法为什么不可以?
        # 因为 string 是不可变序列,所有都是copy update 在赋值,return的时候赋值回来的,所以又变当做局部变量了
    print(add())

更正下:

  1. 觉得错误:
    转载的作者,说list是默认全局的,所以list[0] 可以使用,但是我不敢苟同
  2. 自己意见:
    list[0] 通过list引用,获取到列表对象(在堆里面),然后修改堆里面对象 地位为0的值,并没有去给list引用重新赋值
  3. 证明想法:
    Python UnboundLocalError: local variable 'xxx' referenced before assignment
    Python UnboundLocalError: local variable 'xxx' referenced before assignment
  4. 上图已经证明,子作用域,会继承上层作用域 ,全局作用域是独立空间