我有一个静态方法,它可以收集一些东西并返回它们。
@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
,但仅限于非常罕见的情况。
哪种边缘情况可能导致此行为?
答案 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