解决:UnboundLocalError: local variable ‘js’ referenced before assignment

解决:UnboundLocalError: local variable ‘js’ referenced before assignment



文章目录

  • 解决:UnboundLocalError: local variable 'js' referenced before assignment
    • 背景
    • 报错问题
    • 报错翻译
    • 报错位置代码
    • 报错原因
    • 解决方法
      • 今天的分享就到此结束了



背景

在使用之前的代码时,报错:
Traceback (most recent call last):

File , line 1, in
js = js+1
UnboundLocalError: local variable ‘js’ referenced before assignment



报错问题


  Traceback (most recent call last): 
  ...
    File , line 1, in  
      js = js+1 
  UnboundLocalError: local variable 'js' referenced before assignment

截图如下:

解决:UnboundLocalError: local variable ‘js’ referenced before assignment_第1张图片



报错翻译

主要报错信息内容翻译如下所示:


  Traceback (most recent call last): 
  ...
    File , line 1, in  
      js = js+1 
  UnboundLocalError: local variable 'js' referenced before assignment

翻译:


  回溯(最近一次调用最后一次): 
  ...
 js = js+1
 中的文件 “”,第 1 行 
 UnboundLocalError:赋值前引用的局部变量“js”



报错位置代码


...
js = 0
def main():
      js = js+1 
    print(js)
...



报错原因

经过查阅资料,发现是在函数内部更改全局变量就会出现此错误。

小伙伴们按下面的解决方法即可解决!!!



解决方法

要解决这个错误,需要在函数内部声明全局变量。

正确的代码是:


...
js = 0
def main():
    global js
    js = js+1 
    print(js)
...

补充:一些关于全局变量和局部变量的知识。

全局变量:如上面的例子,在函数外部赋值的变量被称为全局变量(global variable)。

局部变量:定义在函数内部的变量称为局部变量(local variable),局部变量只在函数内部起作用。

局部变量的代码示例如下:

def main():
	js= 3
	print(js)
main() #输出结果为3
print(js) #出错,NameError: name 'js' is not defined提示js未定义

再举一个例子:

js= 4 #全局变量
def main():
	js= 3 #局部变量
	print(js)
main() #返回3,因为在函数内部局部变量a=3
print(js)#返回4,因为在函数外部全局变量a被赋值为4

可见,在函数内部访问变量(js)时,系统首先在函数内部找有没有定义局部变量(js),如果没有,就会在函数外部找有没有定义全局变量(js),如果都找不到才会报错。但是如果在函数外部访问变量(js),那么只会寻找全局变量(js),如果没有就会报错,而不管程序有没有在某个函数内部定义局部变量(js)。



今天的分享就到此结束了

欢迎点赞评论关注三连

在这里插入图片描述

你可能感兴趣的:(Python,开发语言,python)