为了账号安全,请及时绑定邮箱和手机立即绑定

Python函数全局变量?

Python函数全局变量?

叮当猫咪 2019-07-10 10:21:53
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’全局副本的值相同吗?定义后调用函数时,顺序重要吗?
查看完整描述

3 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

如果您只想访问一个全局变量,只需使用它的名称即可。然而变化它的值,您需要使用global关键词。

例如:

global someVar
someVar = 55

这将全局变量的值更改为55。否则,它只会将55赋值给局部变量。

函数定义列表的顺序并不重要(假设它们之间不以某种方式相互引用),它们被调用的顺序是重要的。


查看完整回答
反对 回复 2019-07-10
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

正如其他人所指出的,您需要声明一个变量。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


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 724 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信