-1

我收到以下错误:

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

编辑:堆栈跟踪

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)
4

3 回答 3

2

显示的代码工作正常。

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

使用 python,你永远不应该在你的代码中使用标签(我们有一个实际强制执行的预提交规则)

于 2013-04-23T12:20:03.220 回答
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
于 2013-04-23T11:50:03.830 回答
1

您是否尝试在 ran_network_listen 方法中声明全局?您仅在 set_current_uarfcn 的上下文中声明了它。

于 2013-04-23T12:11:25.087 回答