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

2022-09-01 06:57:13 字數 1007 閱讀 8852

'''

區域性變數與全域性變數

(1)函式體中有區域性變數就用區域性變數,沒有區域性變數用全域性變數

(2)如果想在區域性變數裡邊改變全域性變數 加global 變數名

(3)內層函式想使用外層函式變數需用關鍵字nonlocal.

'''a = 100

deffunc():

a = 200

print

(a)func()

#猜猜輸出的a是100還是200呢?結果為200.驗證第一條.

deffunc1():

global

a a = 300

print

(a)func1()

#猜猜輸出的a是100還是300呢?結果為300

print(a) #

輸出的a為300,因為global a相當於使用全域性變數,在函式中a =300,即將全域性變數改為300

'''上面的例子很簡單,再看乙個例子

'''def

func2():

x = 123

deffunc3():

return

x

return

func3()

a= func2()#

呼叫這個函式,是返回值需要接收

print(a) #

a為123

'''分析:在內層函式裡面要修改外層函式的變數該如何做呢?直接修改是不可以的,可以這樣改:

在能內層函式中,將x定義為區域性變數,使用關鍵字nonlocal

'''def

func2():

x = 123

deffunc3():

nonlocal x

x = x+100

return

x

return

func3()

a= func2()#

呼叫這個函式,是返回值需要接收

print(a) #

a為223

全域性變數 靜態全域性變數 靜態區域性變數 區域性變數

全域性和靜態變數都在堆裡。這句話應該錯了,應該是放在常量資料段 全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用...

全域性變數 靜態全域性變數 靜態區域性變數 區域性變數

全域性和靜態變數都在堆裡。全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用在定義它的那個檔案裡,卻不能用在程式中...

全域性變數 靜態全域性變數區域性變數 靜態區域性變數

對於乙個完整的程式,在記憶體中的分布情況如下圖 區 low address 全域性資料區 堆區 棧區 high address 一般程式把新產生的動態資料存放在堆區,函式內部的自動變數存放在棧區。自動變數一般會隨著函式的退出而釋放空間,靜態資料 即使是函式內部的靜態區域性變數 也存放在全域性資料區。...