我知道这里有很多“ 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”循环之外进行?
答案 0 :(得分:4)
您的循环很可能从未进入过if语句,因此Foo从未被初始化。 您需要在循环之前对其进行初始化,以确保如果从未满足该条件,则可以进行打印。
答案 1 :(得分:2)
在您的情况下,如果第一个if condition
失败,则编译器将不会到达Foo = ...
语句。这将导致您现在得到的错误。
答案 2 :(得分:0)
该错误表明,在检查变量foo时尚未进行初始化。 您应该在循环之前对其进行初始化。