我也试过寻找答案,但我不明白其他人类似问题的答案。。。
tfile= open("/home/path/to/file",'r')
def temp_sky(lreq, breq):
for line in tfile:
data = line.split()
if ( abs(float(data[0]) - lreq) <= 0.1
and abs(float(data[1]) - breq) <= 0.1):
T= data[2]
return T
print temp_sky(60, 60)
print temp_sky(10, -10)
我得到以下错误
7.37052488
Traceback (most recent call last):
File "tsky.py", line 25, in <module>
print temp_sky(10, -10)
File "tsky.py", line 22, in temp_sky
return T
UnboundLocalError: local variable 'T' referenced before assignment
第一个print语句工作正常,但第二个语句不工作。我试过将T设为全局变量,但这会使两个答案相同!请帮忙!
FWIW:我得到同样的错误是因为另一个原因。我把答案贴在这里并不是为了OP的利益,而是为了那些可能因为标题而最终登上这一页的人的利益。。。他可能犯了和我一样的错误。
我搞不懂为什么要得到“赋值前引用的局部变量”,因为我正在调用一个已知已定义的函数:
这是给予:
我花了一段时间才发现明显的问题:我使用了一个名为
job_fn
的局部变量,它屏蔽了查看job_fn
先前函数定义的功能。您的
if
语句始终为false,并且只有在满足某个条件时才会初始化,因此代码不会到达T
获取值(并由此得到定义/绑定)的点。你应该在一个总是被执行的地方引入变量。尝试:
其他答案是正确的:您没有默认值。然而,你的逻辑还有一个问题:
你读了同一个文件两次。读取一次之后,光标位于文件的末尾。要解决此问题,可以执行两项操作:在每次调用函数时打开/关闭文件:
这样做的缺点是每次都要打开文件。更好的方法是:
在循环后执行此操作。它将光标重置为开始,下次调用将再次从那里开始。
相关问题 更多 >
编程相关推荐