python 中函数外的全局和 intizilation 有什么区别
what is difference between global and intizilation outside the function in python
global name
name = "Robert"
def f():
print name
f()
print name
和
的区别
name = "Robert"
def f():
print name
f()
print name
如何区分这两个片段
在函数外部或 类 声明的变量是全局变量(在模块内部)。
global
可以在 function/class 中使用,以便能够在全局范围内修改该变量。
在这种情况下没有理由使用global,两段代码之间没有区别。
使用 global 的原因是如果你 re-assign 一个函数内的变量;但即便如此,您也需要在该函数 之内使用全局 ,而不是在该函数之外。
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
global name
name = "Robert"
def f():
print name
f()
print name
和
的区别name = "Robert"
def f():
print name
f()
print name
如何区分这两个片段
在函数外部或 类 声明的变量是全局变量(在模块内部)。
global
可以在 function/class 中使用,以便能够在全局范围内修改该变量。
在这种情况下没有理由使用global,两段代码之间没有区别。
使用 global 的原因是如果你 re-assign 一个函数内的变量;但即便如此,您也需要在该函数 之内使用全局 ,而不是在该函数之外。
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