區域性變數和全域性變數

2021-08-14 10:07:30 字數 1906 閱讀 9705

根據有效範圍將變數分為兩類:

1 區域性變數:在函式內部定義並且在函式內部有效的變數就是區域性變數

2 全域性變數:在函式內外定義並且在函式內外都有效的變數就是全域性變數 global

'''#區域性變數

def mouth():

#函式內部宣告乙個區域性變數

mzj = '迪麗熱吧'#(部分麻醉)

#在函式內部呼叫區域性變數

print(mzj)

#在函式內部訪問區域性變數:可以

mouth()

#在函式外部訪問區域性變數:不可以

#print(mzj)

#全域性變數

mzj = '小喬哦'#(全身麻醉)

#定義函式

def flower():

#在函式內部訪問全域性變數mzj

print(mzj)

#在函式內部訪問全域性變數:可以

flower()

#在函式外部訪問全域性變數:可以

print(mzj)

#全域性變數這樣假真的完美了嗎?

no1 = 9

def lia ():

#進行一次全域性宣告(通知函式:請注意,下面的no1是全域性變數,並且可以在函式內部修改)

global no1

#程式認為下面的no1是區域性變數

no1 = no1 +10

#函式外部呼叫函式

#再次列印變數no1

print(no1)

#內部函式:在函式內部宣告的函式就是內部函式

#宣告乙個函式

def outer():

#在函式內部再宣告乙個函式(內部函式)

def inner():

print('你好 你好')

#總部內部函式的特徵

#1.內部函式可以直接在函式外部呼叫麼?--不可以(區域性變數)

#inner()

#2.呼叫過外部函式 之後,內部函式可以在函式外部呼叫嗎?---不可以(區域性變數)

#outer()

#inner()

#3.內部函式可以在函式內部呼叫嗎?---可以

#outer()

#4.內部函式在函式內部呼叫的時候有先後順序嗎?--分先後順序,必須在定義函式之後呼叫

outer()

#閉包:通過一定的方式將函式內部的區域性變數或者內部函式轉移到函式之外的方法

#閉包方法1:

def home():

#區域性變數

#錢money ='100美金'

#狗 dog = '旺財'

#內部函式

#妹妹 def newsister():

print('我是阿三的姐姐')

#車def car():

print('我是阿三家的奧迪')

#姐姐def oldsister():

#在姐姐離開家之前,從家裡搬東西

print('我是阿三的姐姐')

#存放東西的容器,元組

return (money,dog,car,newsister)

#姐姐出走前

return oldsister

#小四來接應小三的姐姐

xiaosi = home()

#接收小三姐姐帶出來的東西#相當於呼叫oldsister的函式

things = xiaosi()

print(things)

#接收錢

qian = things [0]

#接受狗

dog = things[1]

#接受車

car = things[2]

#接受姐姐

meimei = things[3]

print(qian)

print(dog)

car()

meimei()

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

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

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

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

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

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