Python global variable
def g():
var =1
print var
var = 10
print var
g()
print var
def g():
var = 1
print var
global var
var = 10
print var
g()
print var
var =1
print var
var = 10
print var
g()
print var
答案為
>>>
10
1
10
>>>
這個很容易理解,本來g()裡面的參數就不會跟外面的混為一談。
def g():
print var
var = 10
print var
g()
print var
print var
var = 10
print var
g()
print var
答案為
>>>
10
10
10
>>>
超有趣,g()中的var,居然直接找到外面的var。
def g():
print var
global var
var = 10
print var
g()
print var
print var
global var
var = 10
print var
g()
print var
答案為
>>>
10
10
10
>>>
多宣告global,跟上一種寫法一樣。好像內定就以為是global
def g():
var = 1
print var
global var
var = 10
print var
g()
print var
答案為
>>>
10
1
10
>>>
g()中多了var = 1怎麼又認為不是外部的var了呢?外部var明明有宣告為 global了。這樣就可理解,上兩種寫法,因為沒有在 g()中給定 var 一個值。所以python 認為g()裡面的var與外面的是一樣的。所以給一個值,python會做出新變數。這樣我們可以推論,如果有沒新宣告為global不能給值。
>>> global v = 1
SyntaxError: invalid syntax
沒錯,改成
global v #先宣告是global
v = 1
嗯…
def g():
global var
var =1
print var
var = 10
print var
g()
print var
global var
var =1
print var
var = 10
print var
g()
print var
答案為
>>>
10
1
1
>>>
因為在 g() 中先宣造 var是一個外部共用(global)的參數,所以g()會去找var在哪裡被宣告過。
留言
張貼留言