x=5
def printx()
print x
x=10
运行此命令会产生unboundlocal错误
但是当我的功能只是打印x时,我没有错误..
答案 0 :(得分:1)
只需在函数中为x
赋值即可使其成为局部变量,从而遮蔽前一行指定的全局x
。在您尝试打印它的行上,x
的本地版本尚未初始化。令人好奇的是,在后续行上做某事会影响到之前的行,但这就是它的工作原理。
您不需要任何特殊声明来读取全局变量,因此它可以在没有赋值的情况下工作。但是,如果您要分配给全局x
而不是制作新的本地x
,则必须在分配global x
之前指定{{1}}。