栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 解决 local variable ‘xxx‘ referenced before assignment

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 解决 local variable ‘xxx‘ referenced before assignment

解决 local variable ‘xxx‘ referenced before assignment

在刷leetcode的时候,定义全局变量后在函数中调用总是会出现这个错误,一直没搞明白,现在记录一下

问题原因
  1. 变量声明之前未定义
    如以下代码段:
def tmp():
print(a)

报错,只需声明一下即可解决

def tmp():
a = 1
print(a)
  1. 在函数中修改全局变量
a = 0
def tmp():
	print(a)
	a+=1

此时会报错,因为在tmp函数中修改了全局变量a的值,此时,只需加入global声明,即可解决

a = 0
def tmp():
	global a
	print(a)
	a+=1
global和nonlocal的区别

但是,若在函数中声明变量,在函数的子函数中嵌套的修改全局变量,使用global也会报错,未找到变量xxx,因为在子函数中修改父函数声明的变量,需要使用nonlocal声明,如:

class A(self):
	def tmp1():
		
		a = 0
		def tmp2():
			global a
			print(a)
			a+=1

此时会报错,修改为:

class A(self):
	def tmp1():
		
		a = 0
		def tmp2():
			nonlocal a
			print(a)
			a+=1

成功运行

PS:若全局变量为list等类型,采用append pop操作不会报错,不需要声明,而int str等类型则需要,在LeetCode中也可以采用__init__的方式将变量作为类属性声明,然后使用。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026531.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号