赋值前引用的局部变量.python



我编写了以下函数:

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

最新更新