2011-02-04 82 views
0
x=5 

def printx() 
    print x 
    x=10 

运行这个运行时错误给unboundlocal错误局部变量 - 与当地

但是当我的功能只是打印喜没有错误..

+0

相关:http://stackoverflow.com/questions/1188944/reason-for-unintuitive-unboundlocalerror-behaviour – 2011-02-04 18:41:53

+1

重复http://stackoverflow.com/questions/1281184/why-cant-i-set-a -global-variable-in-python – 2011-02-04 18:45:56

回答

1

只需在函数值分配给x是使其成为一个局部变量,因此影响前一行指定的全局x。并且,您正在尝试打印该行,该本地版本x尚未初始化。我们很好奇在后面的工作上做些什么会影响到它之前的线条,但这只是它的工作原理。

您不需要任何特殊的声明来读取全局变量,因此它在没有赋值的情况下工作。但是,如果您宁愿分配给全球x,而不是创建新的本地x,则必须在分配给它之前指定global x