分配前引用的局部变量。蟒蛇

时间:2018-07-22 15:23:19

标签: 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"

我看到所有解决方案都依赖于全局变量,但我不想使用它。 我尝试使用全局变量,但是这使事情变得更加复杂,因为当我调用函数“获取运行时间”时,它并不考虑开始时对“ test_time”的初始化,并且在整个运行过程中,全局变量保持相同程序。  还有另一种解决方法吗? 谢谢。

2 个答案:

答案 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