global name
name = "Robert"
def f():
print name
f()
print name
之間是什麼蟒蛇
name = "Robert"
def f():
print name
f()
print name
如何這兩個片段之間的區分
global name
name = "Robert"
def f():
print name
f()
print name
之間是什麼蟒蛇
name = "Robert"
def f():
print name
f()
print name
如何這兩個片段之間的區分
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
是的,我明白了,但使用這些 –
對外宣稱的功能或類變量,是全球性的差別全局和intizilation功能外之間的差異(在模塊內)。
global
可以在函數/類中使用,以便能夠在全局範圍內修改該變量。
在這種情況下沒有理由使用全局,並且兩段代碼之間沒有區別。
使用全局的原因是如果您重新分配函數中的變量;但即使如此,您仍然需要使用以內的全球,該功能不在外面。
編寫代碼,請。 – tglaria
好吧,現在區別在於:第一個代碼運行,第二個代碼與IndentationError一起崩潰。 – Kevin
如果有錯誤,請更正這些@凱文 –