python 函式的全域性變數與區域性變數 學習總結

2021-08-19 18:08:29 字數 1755 閱讀 9708

全域性變數就是在

整個範圍內都可以呼叫的變數

區域性變數就是在函式內部可以呼叫,

一旦出了函式到整體來的時候就不能呼叫的變數,我們稱為區域性變數

只有函式才能讓包含在自己'體內'的東西'區域性化'

例如:

name = 'capture'		#這裡的name就是全域性變數

def test():

name = '梁非凡' #而這裡的name是區域性變數

print(name)

test()

print(name) #這裡的name輸出的是capture,雖說在函式裡已經把梁非凡賦值給了name,但是因為是區域性變數,所以在出了函式的時候就已經失效了

在上面的例子中,我們在name = '梁非凡'的前面加上一句

global name

這樣,就可以把name 這個區域性變數變成全域性變數了

這裡的global只是給了乙個通道,讓函式內部可以通過這個通道聯絡到global後面跟的全域性變數

在函式內部的東西,一般想要呼叫引數或者做別的事情,

都會優先從函式內部找,找不到才去找全域性的(就像在家想吃東西,肯定都先在家裡找吃的,找不到才會出門去找吃的)

例如:

def test1():

global name

print(name)

def test2():

name = '123'

print(name)

test1()

test2()

像這裡,雖然test1()已經把name引用成全域性變數了,但是在test2()裡,還是按照基本法優先找了區域性變數的name = '123'

最後,如果是在函式的巢狀函式裡使用了global關鍵字,

python會去找最外層的全域性變數,而不是上一層函式的變數

nonlocal

3.建議:在宣告變數的時候,最好給全域性全域性變數的變數名一些相對於區域性變數變數名不同的東西,讓它們名字不同,這樣更容易區分區域性變數和全域性變數

巢狀函式其實也是按照python的基本法來執行的,就是從前到後,按照縮排執行,但是因為相對要複雜一點所以值得說一下

例如:

x = '這是第0個字串'                     #1

def a1():                               #2

x = '這是第乙個字串'                #3

print(x)                            #4

def a2():                           #5

x = '這是第二個字串'            #6

print(x)                        #7

def a3():                       #8

x = '這是第三個字串'        #9

print(x)                    #10

a3()                            #11

a2()                                #12

a1()                                    #13

print(x)                                #14

這裡的執這裡的執行順序應該是1-13-3-4-12-6-7-11-9-10-14

python函式全域性變數與區域性變數

區域性變數 在函式中定義的變數一般只能在該函式內部使用,這些只能在程式的特定部分使用 全域性變數 在乙個檔案頂部定義的變數可以供該檔案中任意函式呼叫 1優先讀取區域性變數,能讀取全域性變數,無法對全域性變數重新賦值 name 全域性變數 def change name name 區域性變數 prin...

python 函式 區域性變數與全域性變數

本節知識點 程序啟動獲得資源 定義變數,定義函式,占用資源 函式內部定義的變數是區域性變數 在當前程序作用範圍內的變數是全域性的變數 例子 租房市場,單間小房與客廳,小板櫈的使用許可權 區域性變數 全域性變數 例子當前的租房市場 單間800元 月,一般是三室一廳的某乙個室,臥室 通過來加深理解 na...

python 函式區域性變數與全域性變數

區域性變數是在某個函式中宣告的,只能在該函式中呼叫它,如果試圖在超出範圍的地方呼叫,程式就爆掉了 如果在函式內部定義與某個全域性變數一樣名稱的區域性變數,就可能會導致意外的效果,可能不是你期望的。因此不建議這樣使用,這樣會使得程式很不健全 全域性變數是在整個py檔案中宣告,全域性範圍內都可以訪問 注...