Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 局部变量赋值错误,为什么?_Python - Fatal编程技术网

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