返回变量时的UnboundLocalError

时间:2018-01-23 19:04:03

标签: python static-methods

我有一个静态方法,它可以收集一些东西并返回它们。

@staticmethod
def testForMetrics(....):
    ...
    ...

    coverages = Metrics.findCoverageStats(....)

    ...
    return coverages, ....

findCoverageStats看起来像

@staticmethod
def findCoverageStats(....)
    coverages = {}

    ...# fill coverages with calculations

    return coverages

跑步告诉我UnboundLocalError: local variable 'coverages' referenced before assignment,但仅限于非常罕见的情况。

哪种边缘情况可能导致此行为?

1 个答案:

答案 0 :(得分:1)

您引用的错误类型(UnboundLocalError: local variable 'xxx' referenced before assignment)是典型的情况,因为通过函数执行的多个潜在路径未设置变量。

请参阅下文,了解此类情况的(简化)示例:

def fun():
    if random.randint() < 1000:
        xxx = 1
    else:
        yyy = 1

    return xxx

一种方法是使用默认值声明xxx或在else子句中指定(下面的第一个解决方案)。

def fun():
    xxx = 0
    if random.randint() < 1000:
        xxx = 1
    else:
        yyy = 1

    return xxx