我编写了以下函数:
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”的初始化,并且全局变量在整个运行过程中保持相同的数字程序。 还有其他方法可以解决这个问题吗? 谢谢。
最佳答案
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
关于python - 赋值之前引用的局部变量。 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466556/