全域性變數和區域性變數

2021-07-30 15:36:37 字數 1764 閱讀 3712

通常的認為是定義在函式外面的就稱之為全域性變數 函式體內的稱之為區域性變數

在函式中與全域性變數同名的時候

情形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中有效 不同函式中同名變數,佔不同儲存單元 形參屬於區域性變數 可定義在復合語句中且只在本復合語句中有效的變數 在未被賦值或初始化的情況下,初值為隨機數 二 全域性變數 定義...