我写了以下函数:
def get_running_time(test):
for line in PERFORMANCE_FILE:
print(test_time)
line_rr = line.split()
test_time = int(line_rr[-2])
print(test_time)
return test_time
我得到了错误:
"local variable 'test_time' referenced before assignment"
我看到所有解决方案都依赖于全局变量,但我不想使用它。 我尝试使用全局变量,但是这使事情变得更加复杂,因为当我调用函数“获取运行时间”时,它并不考虑开始时对“ test_time”的初始化,并且在整个运行过程中,全局变量保持相同程序。 还有另一种解决方法吗? 谢谢。
答案 0 :(得分:2)
UnboundLocalError
是因为迭代器PERFOMANCE_FILE
可能为空,在这种情况下,for
的迭代永远不会发生,在这种情况下,test_time
永远不会被设置(因为只能在循环内设置)。
但是,当您返回test_time
时,UnboundLocalError
会升高。您可以改为在顶部设置一个默认值,以在PERFOMANCE_FILE
为空时返回:
def get_running_time(test):
test_time = '' # Default
for line in PERFORMANCE_FILE:
print(test_time)
line_rr = line.split()
test_time = int(line_rr[-2])
print(test_time)
return test_time
答案 1 :(得分:0)
尝试一下:
def get_running_time(test):
for line in PERFORMANCE_FILE:
#test_time is not defined here on the first loop so you can't print it
line_rr = line.split()
test_time = int(line_rr[-2])
print(test_time)
return test_time