我编写了以下函数:
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"
我看到所有的解决方案都在全球范围内传递,但我不想使用它。我尝试过使用globals,但它让事情变得更复杂,因为当我调用函数"get running time"时,它一开始没有考虑"testtime"的初始化,并且在整个程序运行过程中,global保持不变。有其他方法可以解决这个问题吗?谢谢
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
试试这个:
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