猿问

Python函数全局变量?

Python函数全局变量?

我知道我应该避免使用全局变量,因为这样的混淆,但是如果我要使用它们,下面是使用它们的有效方法吗?(我试图调用在单独函数中创建的变量的全局副本。)

x = "somevalue"def func_A ():
   global x   # Do things to x
   return xdef func_B():
   x=func_A()
   # Do things
   return x

func_A()func_B()

第二个函数使用的‘x’值与‘func_a’使用和修改的‘x’全局副本的值相同吗?定义后调用函数时,顺序重要吗?


叮当猫咪
浏览 725回答 3
3回答

手掌心

如果您只想访问一个全局变量,只需使用它的名称即可。然而变化它的值,您需要使用global关键词。例如:global someVar someVar = 55这将全局变量的值更改为55。否则,它只会将55赋值给局部变量。函数定义列表的顺序并不重要(假设它们之间不以某种方式相互引用),它们被调用的顺序是重要的。

慕侠2389804

正如其他人所指出的,您需要声明一个变量。global在函数中,当您希望该函数能够修改全局变量时。如果您只想访问它,那么您就不需要global.要更详细地讨论这个问题,“修改”的意思是:如果您想重新绑定全局名称,因此它指向另一个对象,必须声明名称。global在功能上。许多修改(变异)对象的操作不要重新绑定全局名称以指向另一个对象,因此它们是全有效不声明名字global在功能上。d = {}l = []o = type("object", (object,), {})()def valid():     # these are all valid without declaring any names global!    d[0] = 1      # changes what's in d, but d still points to the same object    d[0] += 1     # ditto    d.clear()     # ditto! d is now empty but it`s still the same object!    l.append(0)   # l is still the same list but has an additional member    o.test = 1    # creating new attribute on o, but o is still the same object
随时随地看视频慕课网APP

相关分类

Python
我要回答