x=100
def fun2():
print x
x=10000
print x
fun2()
以上程序在分配之前显示局部变量x引用。为什么不打印 100 10000
答案 0 :(得分:0)
函数中的x是局部变量,并且无法访问您首先定义的其他局部变量,因为它们位于不同的范围内。
将global x
添加到函数的开头或在函数内定义x。
答案 1 :(得分:0)
您似乎不了解变量范围。
变量x在函数范围中不存在。
您必须在print语句之前放置global x
才能访问全局变量x。
x = 1 # Global x
def f():
x = 2 # function-local x
print(x) # prints 2
f()
print(x) # prints 1 because it uses the global x which remains unchanged
答案 2 :(得分:0)
如果您希望这样做,您需要在函数内部指定您使用的x
变量是使用global
关键字在全局范围内的变量。
x=100
def fun2():
# Add this line
global x
print x
x=10000
print x
fun2()
答案 3 :(得分:0)
下面的代码将打印x -> 100
的值,因为它位于主范围@samba中,但是当你更改它的值时,它没有那样工作,因为它没有在函数中定义
x = 100
def fun2():
print(x)
fun2()
这不会以同样的方式运作:
x = 100
def fun2():
print(x)
x = 1000
print(x)
fun2()
并通过错误:
UnboundLocalError:局部变量' x'在分配前引用
x
是一个局部变量,未在函数fun2()
中初始化。
您需要了解变量范围,请检查Global and Local variable scope
如果您想全局使用它,请在您的函数中使用global
关键字。
答案 4 :(得分:-2)
因为u在函数之前赋值变量。 试试这个
def fun2():
x=100
print x
x=10000
print x
fun2()
它将输出100和1000