我有以下代码:
def readTweet():
tweets = open("tweets.txt", "r", encoding="utf-8")
counter = 0
coordinates = []
try:
line = tweets.readline()
if line != "":
lineList = line.split()
else: # <----- This statement
return 0
for word in lineList:
phrase = word.strip("[],.?!#")
if counter == 0 or counter == 1:
coordinates.append(float(phrase))
counter = counter + 1
except IOError:
print("Input error, not a number.")
我的问题是当我删除else
语句else: return 0
时,我会收到警告
Local variable 'lineList' might be referenced before assignment
如果我要打印print(coordinates)
,我会得到相同的输出,无论else
语句是否存在。我的问题是,为什么Python会给我这个警告?
答案 0 :(得分:1)
此警告是正确的。
在第
行 for word in lineList:
您可以在收到任何值之前访问linelist
var。
但是,Python已知它是一个局部变量,因为它存在于本地范围的=
的左侧。
考虑这个简单的例子:
a = 1
def foo():
print(a)
a = 2
foo()
在此代码中,a
是foo
函数范围内的局部变量,它在print()
调用之前被访问,然后才能获得任何值。