局部变量赋值错误,为什么?

时间:2013-04-23 11:45:59

标签: python

我收到以下错误:

UnboundLocalError: local variable 'current_uarfcn' referenced before assignment

但是我不知道为什么,我声明它与ran_update_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

这样称呼:

    # Network Listen
    if args.ap_id:
      ap_id = args.ap_id[0]
      mode = None
      if len(args.ap_id) == 2:
          mode =  args.ap_id[1]
      ran_network_listen(ap_id, mode)

3 个答案:

答案 0 :(得分:2)

显示的代码可以正常使用。

我能想到的唯一问题是你在其他行的某些行和空格上使用制表符,以便赋值语句确实是外部函数的一部分。

使用python你永远不应该为你的代码使用制表符(我们有一个实际强制执行的预提交规则)

答案 1 :(得分:1)

您必须在第一个函数

中定义ran_network_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

答案 2 :(得分:1)

您是否尝试在ran_network_listen方法中声明全局? 您只在set_current_uarfcn。

中的上下文中声明了它