UnboundLocalError:局部变量'数据'在分配之前引用

时间:2018-03-21 23:36:47

标签: python global local

我首先遇到了一个本地错误,当我将global应用于我的代码时,出现语法错误。

def get_data():
  try:
    source = someURL
    data = requests.get(source)

    try:
      with open('data_file.csv', 'a') as file:
        writer = csv.DictWriter(file, fieldnames=['Column'])
        writer.writerow({'Column':data})
    except:
      pass
  except:
    pass

首先,我收到了UnboundLocalError: local variable 'data' referenced before assignment的错误,然后我在第二个global data上方添加了try。现在我得到了SyntaxError: name 'data' is assigned to before global declaration

我试图通过应用其他人的解决方案来解决它,但没有运气。你会怎么解决它?感谢。

更新: data可能无法获取值。如果没有值,则writerow行会出错。但是,如果我在第一次尝试之后添加了except: None,意图返回None,如下所示:

def get_data():
  try:
    source = someURL
    data = requests.get(source)
  except:
    None

它将生成局部变量错误:local variable 'data' referenced before assignment。我必须做的唯一方法是将data定义为global。如果我甚至走在正确的道路上,我会感到困惑。或者应该有什么办法而不是使用except: None?感谢。

1 个答案:

答案 0 :(得分:0)

' UnboundLocalError:本地变量'数据'在转让前引用'错误表示'数据'在代码的第9行中调用时尚未分配。要么数据'是在get_data()函数之外定义的,或者是初始的try-block,其中' data'已定义未被调用。

我能够按预期运行此代码 - 仔细检查您的代码是否正确缩进,并且没有其他格式错误。

以下代码按预期运行:

def get_data():
    try:
        source = someURL
        data = requests.get(source)

        try:
            with open('data_file.csv', 'a') as file:
                writer = csv.DictWriter(file, fieldnames=['Column'])
                writer.writerow({'Column':data})
        except:
            pass
    except:
        pass