python - 赋值之前引用的局部变量。 Python

标签 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”的初始化,并且全局变量在整个运行过程中保持相同的数字程序。 还有其他方法可以解决这个问题吗? 谢谢。

最佳答案

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/

相关文章:

python - 防止 RegEx 在大型匹配时挂起

python - 后缀数组python的函数

python - 索引/分箱时间序列

python - 使用正则表达式从大型 SFrame 或数据帧中提取信息,而不使用循环

python - 迁移时 Django 在设置中找不到自定义用户模型

python - 如何编程以使用机器上的所有处理器?

python - 什么是最好的 facebook python-sdk fork?

python - 如何过滤 pandas 数据框中特定列的第一和第三四分位数内的行?

python - 如何在 PythonAnywhere 上将变量打印到 Bash 控制台?

python - SQLAlchemy:一对一关系对象创建问题