Python全局变量
def say_boo_twice():
global boo
boo = 'Boo!'
print boo, boo
boo = 'boo boo'
say_boo_twice()
输出结果是
Boo! Boo!
这和我预想的结果不一样。因为我把 boo
声明为全局变量,为什么输出不是:
boo boo boo boo
6 个回答
5
你在把boo声明为全局变量之后又重新给它赋值,所以它的值就是你最后一次给它设置的那个。如果你把第三行去掉,你就会得到你想要的输出。
18
因为你在之前就重新赋值了。把 boo = 'Boo!'
这一行注释掉,你就会得到你描述的结果。
def say_boo_twice():
global boo
#boo = 'Boo!'
print boo, boo
boo = 'boo boo'
say_boo_twice()
另外,global boo
这一行其实是多余的,因为 boo
本身已经在全局范围内了。这里的 global
才会起作用。
def say_boo_twice():
global boo
boo = 'Boo!'
print boo, boo
say_boo_twice()
print "outside the function: " + boo #works
而:
def say_boo_twice():
#global boo
boo = 'Boo!'
print boo, boo
say_boo_twice()
print "outside the function: " + boo # ERROR. boo is only known inside function, not to this scope
29
你在函数里改了boo
,那它为什么不变呢?另外,全局变量不好用。