Python全局变量

2024-06-14 10:55:22 发布

您现在位置: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


Tags: 声明def全局globalsayprintbootwice
3条回答

在将boo声明为global之后,您将重新分配它,因此该值是最后一个分配给它的值。如果删除第三行,将得到预期的输出。

因为你要提前重新分配。注释掉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

你已经改变了函数内部的boo,为什么它不改变呢?而且,全局变量也不好。

相关问题 更多 >