Python 局部变量赋值错误,为什么?
我得到以下错误:Python 局部变量赋值错误,为什么?,python,Python,我得到以下错误: UnboundLocalError:赋值前引用的局部变量“current\u uarfcn” 但是我不知道为什么,我用与ran\u update\u uarfcn相同的方式声明它,并且该变量工作正常。有什么想法吗 current_uarfcn = "" ran_update_uarfcn = "" def ran_network_listen(access_point_id, mode): def set_current_uarfcn(value): glo
UnboundLocalError:赋值前引用的局部变量“current\u uarfcn”
但是我不知道为什么,我用与ran\u update\u uarfcn
相同的方式声明它,并且该变量工作正常。有什么想法吗
current_uarfcn = ""
ran_update_uarfcn = ""
def ran_network_listen(access_point_id, mode):
def set_current_uarfcn(value):
global current_uarfcn
global ran_update_uarfcn
current_uarfcn = value
ran_update_uarfcn = "upd ap" + " " + access_point_id + " " + "uarfcn=" + current_uarfcn
set_current_uarfcn("11000")
print ran_update_uarfcn
print current_uarfcn
return
编辑:stacktrace
Traceback (most recent call last):
File "/a/b.py", line 460, in <module>
ran_network_listen(ap_id, mode)
File "/a/b.py", line 97, in ran_network_listen
print current_uarfcn
UnboundLocalError: local variable 'current_uarfcn' referenced before assignment
您必须在第一个函数中定义ran\u network\u listen
current_uarfcn = ""
ran_update_uarfcn = ""
def ran_network_listen(access_point_id, mode):
global current_uarfcn
global ran_update_uarfcn
def set_current_uarfcn(value):
current_uarfcn = value
ran_update_uarfcn = "upd ap" + " " + access_point_id + " " + "uarfcn=" + current_uarfcn
set_current_uarfcn("11000")
print ran_update_uarfcn
print current_uarfcn
return
您是否尝试在ran\u网络\u侦听方法中声明全局?
您仅在set\u current\u uarfcn内的上下文中声明了它。显示的代码可以正常工作 我能想到的唯一问题是,您在某些行上使用制表符,在其他行上使用空格,因此赋值语句实际上是外部函数的一部分
使用python时,您永远不应该对代码使用制表符(我们有一个预提交规则,实际上可以强制执行此规则)您发布的代码不会显示该错误。请发布一个您当时测试过的完整示例。此外,请包含stacktrace并标记错误发生的行。这是调用的完整代码,我在堆栈跟踪中添加了调用丢失。陈述的顺序正确吗?函数是否出现在顶部的两行之后?如果只读取变量值(即,如果没有赋值),则无需在函数中放入
global
声明。这很好,谢谢。虽然我不知道;I don’我不知道我看到的行为为什么会发生。是的,这是有效的,我根本不需要在set\u current\u uarfcn
中声明它。但是我想知道为什么一个变量起作用而另一个不起作用。如果删除返回错误的变量,它不会出现,而另一个变量会出错?是的,另一个变量没有错误。错误现在已经消失了。我刚刚删除了这个变量,然后把它放回去!很好,现在开始工作了:)我用#/usr/bin/python-tt
。我通过简单地更改变量的名称(在末尾添加一个2)解决了这个问题,效果很好。我不知道为什么。我把它换了回去,它仍然很好用。这很奇怪。可能是这样的,只是一些错误,谢谢。
current_uarfcn = ""
ran_update_uarfcn = ""
def ran_network_listen(access_point_id, mode):
global current_uarfcn
global ran_update_uarfcn
def set_current_uarfcn(value):
current_uarfcn = value
ran_update_uarfcn = "upd ap" + " " + access_point_id + " " + "uarfcn=" + current_uarfcn
set_current_uarfcn("11000")
print ran_update_uarfcn
print current_uarfcn
return