在'for'循环中声明的Python变量不在循环

时间:2019-11-15 19:28:50

标签: python scope

我知道这里有很多“ python作用域问题”,但是我对python十分生疏,我对我不断遇到的“ UnboundLocalError”问题感到困惑。我已经读到“ for”循环没有包含范围,但是我的代码似乎以这种方式起作用...我的代码看起来像这样:

`
...
for b in blocks[:]:
    if b.contains(CONSTANT_NUM):                                    
        r = b.split(CONSTANT_NUM+2)
        if r: blocks.append(r)
        Foo= struct.unpack('<H', b.data)[0]
        Bar = Foo
...
print("Foo: 0x%x" % (Foo))
`

每当我运行此命令时,都会出现错误“ UnboundLocalError:分配前引用的本地变量'Foo'”。当我改为尝试打印Bar时,出现相同的错误。为什么赋值未在“ for”循环之外进行?

3 个答案:

答案 0 :(得分:4)

您的循环很可能从未进入过if语句,因此Foo从未被初始化。 您需要在循环之前对其进行初始化,以确保如果从未满足该条件,则可以进行打印。

答案 1 :(得分:2)

在您的情况下,如果第一个if condition失败,则编译器将不会到达Foo = ...语句。这将导致您现在得到的错误。

答案 2 :(得分:0)

该错误表明,在检查变量foo时尚未进行初始化。 您应该在循环之前对其进行初始化。