local variable ‘x‘ referenced before assignment错误

前言:报local variable ‘x‘ referenced before assignment错误 通常是两种原因: 一是函数试图修改全局变量; 二是内部函数试图修改外部函数变量。
先介绍两个概念:
1.局部变量是定义在函数内部定义并使用的变量,它只在函数内部有效。
2.全局变量是定义在函数外部,它既可以在各函数的外部使用,也可在各函数内部使用。

情况一:函数欲修改全局变量

声明在最前面的变量就是全局变量,通俗讲就是公用的,所以func1在 ‘小岳岳’ 后面拼接 ‘唱歌’ 字符串时没有修改权限当然会报错;但func2中的变量name是局部变量,它自己可以随便修改

name = '小岳岳' # 全局变量,声明在函数外(公用的)


def func1():
    name += '唱歌'
    print(name)      
func1() #--> 系统报错:local variable ‘name‘ referenced before assignment


def func2():
    name = '小月月' # 局部变量,声明在函数内(自用的)
    name += '大美女'
    print(name) 
func2() #--> 小月月大美女
解决方法:用 global 1 声明name为全局变量
name = '小岳岳'  


def func1():
    global name 
    name += '唱歌'
    print(name)


func1()  # --> 小岳岳唱歌

情况2:内部函数欲修改外部函数变量

这种情况可以理解成,i 是func的局部变量,但对in_func则是全局变量

def func():
    i = 99

    def in_func():  # 内部函数
        i += 1
        print(i)
        
    in_func()

func()
解决办法是加 nonlocal 2

在这里插入图片描述

本人能力能力有限,希望能帮到你


  1. global是全局、全面的意思 ↩︎

  2. local是本地、局部的意思,nonlocal就是反义词 ↩︎

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值