global name
name = "Robert"
def f():
print name
f()
print name
和
之间的区别name = "Robert"
def f():
print name
f()
print name
如何区分这两个片段
答案 0 :(得分:2)
在函数或类之外声明的变量是全局的(在模块内)。
global
可以在函数/类中使用,以便能够在全局范围内修改该变量。
答案 1 :(得分:1)
在这种情况下没有理由使用global,并且两段代码之间没有区别。
使用全局的原因是你在一个函数中重新赋值变量;但即使这样,你也需要在中使用全局,而不是在外面。
答案 2 :(得分:1)
global
未将变量声明为全局变量,它会在函数查找分配给变量的变量名称时更改。
如果没有global
,则在首次为其赋值时会创建局部变量
使用global
,全局查找名称。如果分配给它时不存在,则全局创建
(如果你输入拼写错误并意外地创建一个新的全局变量,这可能会非常混乱。)
它对全球范围没有影响,因为那里的一切都是全球性的 换句话说,你的两段代码是等价的。
以下是它的作用示例:
name = "foo"
def f():
name = "bar"
print "In f:", name
def g():
global name
name = "baz"
print "In g:", name
def h():
global mame
mame = "foobar"
print "In h:", mame
print "Globally:", name
f()
print "Globally:", name
g()
print "Globally:", name
h()
print "Globally", name
print "Globally", mame
输出:
Globally: foo
In f: bar
Globally: foo
In g: baz
Globally: baz
In h: foobar
Globally: baz
Globally: foobar