Python global variable

def g():
    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

 答案為

>>> 
10
10
10
>>> 
超有趣,g()中的var,居然直接找到外面的var。

def g():
    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

 答案為

>>> 
10
1
1
>>> 
因為在 g() 中先宣造 var是一個外部共用(global)的參數,所以g()會去找var在哪裡被宣告過。

留言

這個網誌中的熱門文章

python 找圖自動點擊

Python pyserial 抓取系統內的 COM PORT

VBA EXCEL 工作表變化 馬上執行 的作法 Worksheet_Change