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