通常的認為是定義在函式外面的就稱之為全域性變數 函式體內的稱之為區域性變數
在函式中與全域性變數同名的時候
情形1
函式內部的變數名如果第一次出現,且出現在=前面,即被視為定義乙個區域性變數。
num = 100
# 定義乙個全域性變數
defdemo
(): num += 100
# 這裡面的實際上是定義了乙個區域性的變數
print(num)
demo()
'''列印的結果:出現異常 本地變數在引用前沒有被分配
unboundlocalerror: local variable 'num' referenced before assignment
在列印的結果中可以看出由於在使用前沒有定義變數而報錯的,
由此證明這裡是定義了乙個區域性變數而不是使用了全域性的變數 num
情形2
函式內部的變數名如果第一次出現,且出現在=後面,且該變數在全域性域中已定義,則
這裡將引用全域性變數,如果該變數在全域性域中沒有定義,當然會出現「變數未定義」的錯誤。
num = 100
defdemo2
(): x=num+100
# 這裡使用的是全域性變數 沒有定義區域性變數就是用全域性變數
print(x)
demo2()
'''列印結果:
200'''
情形3
優先使用區域性變數 前提是區域性變數需要被先定義了
函式中使用某個變數時,該變數名既有全域性變數也有同名的區域性變數,則會使用區域性變數
num = 100
defdemo3
(): num = 200
#這個是區域性變數 但是已經被先定義了 使用了區域性變數
x = num + 100
print(x)
demo3()
列印結果:
300
情形4
當把全域性變數當作 引數傳入的時候 就當作普通的引數來進行使用
def
demo4
(num):
print("傳入的num", num)
num += 100
print("修改後的num", num)
demo4(num)
print("全域性的變數",num)
'''列印的結果:
傳入的num 100
修改後的num 200
全域性的變數 100
'''
情形5
使用global來宣告是乙個全域性變數
要在乙個函式中修改乙個全域性變數的時候 首先需要使用global來宣告這個是全域性變數
然後才可以進行修改
num = 100
# 定義乙個全域性變數
defdemo5
():global num # 這裡宣告 num是乙個全域性變數
num += 100
# 這裡面的實際上是定義了乙個區域性的變數
print(num)
demo5()
列印的結果:
200修改後的全域性變數 200
全域性變數和區域性變數
全域性變數 可以被不同的函式 類或檔案呼叫的變數,在函式外定義。區域性變數 只能在函式內使用,定義在函式內。區域性變數的使用 class myclass def myfun num 12 print myfun num num 正確 def myfun2 num num 1 print mufun ...
全域性變數和區域性變數
區域性變數 在方法中開闢的變數,只在方法中有效 區域性變數在定義時不會初始化,要顯式的給它乙個值 如未給它乙個初始值,雖然編譯的時候會通過,但是執行的時候會產生為初始化錯誤!方法呼叫 執行完,區域性變數便會自動釋放。在方法內的語句塊中建立的變數在編譯時假如未初始,如若使用,也會報未初始化錯誤!呼叫的...
全域性變數和區域性變數
一 區域性變數 區域性變數 內部變數,儲存於棧中 定義 在函式內定義,只在本函式內有效 說明 main中定義的變數只在main中有效 不同函式中同名變數,佔不同儲存單元 形參屬於區域性變數 可定義在復合語句中且只在本復合語句中有效的變數 在未被賦值或初始化的情況下,初值為隨機數 二 全域性變數 定義...