Don*_*Lun 13 python variables global global-variables
def say_boo_twice():
global boo
boo = 'Boo!'
print boo, boo
boo = 'boo boo'
say_boo_twice()
Run Code Online (Sandbox Code Playgroud)
输出是
嘘!嘘!
不像我预期的那样.既然我宣布boo为全局,为什么输出不是:
嘘嘘嘘
Dr *_*Kay 25
你已经改变了boo你的功能,为什么它不会改变?此外,全局变量也很糟糕.
jon*_*tar 17
因为你事先重新分配.评论出来boo = 'Boo!',你会得到你描述的.
def say_boo_twice():
global boo
#boo = 'Boo!'
print boo, boo
boo = 'boo boo'
say_boo_twice()
Run Code Online (Sandbox Code Playgroud)
这global boo也是不必要的,boo已经在全球范围内.这就是global有差别
def say_boo_twice():
global boo
boo = 'Boo!'
print boo, boo
say_boo_twice()
print "outside the function: " + boo #works
Run Code Online (Sandbox Code Playgroud)
鉴于:
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
Run Code Online (Sandbox Code Playgroud)