我首先遇到了一个本地错误,当我将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
?感谢。
答案 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