函式 命名空間和作用域

2022-06-29 11:12:09 字數 2537 閱讀 8449

一.命名空間。

二.作用域

三函式的巢狀。

今日新名詞:

1)globals()函式 檢視全域性作用域的內容;

2)locals()函式 檢視區域性作用域的內容;

3)global

方法 呼叫全域性作用域的變數並獲得修改許可權;

4)nonlocal 方法 呼叫區域性作用域的變數並獲得修改許可權.

命名空間: 用來存放名字和值的關係的空間叫命名空間,我們的變數儲存的時候就是儲存再這片空間中

命名空間的分類:

1. 全域性命名空間: 我們在py檔案中自己寫的變數, 函式.....

2. 內建命名空間: 我們python直譯器提供好的一些內建內容(print

, input....)

3. 區域性命名空間: 在我們執行函式的時候.會產生乙個區域性命名空間. 放的是: 函式內部的內容(變數, 函式,類...)

命名空間可能會有無數個, 區域性命名空間而言. 相對是獨立的.一般互不干擾

取值順序:

1.區域性命名空間  →→  2.全域性命名空間  →→  3.內建命名空間

作用域命名空間: 

作用域就是作用的範圍.分為兩類:

1.全域性作用域: 包含內建和全域性命名間,在整個檔案的任何位置都可以使用(遵循從上到下的順序)

2.區域性作用域: 在函式內部可以使用

就是說,乙個變數名如果是全域性變數,那麼它就是全域性作用域; 

如果是區域性變數名(函式內),它就是區域性作用域.

1)檢視全域性命名空間內容的方法:globals()

print(globals())  #列印全域性作用域中的內容  包括(內建命名空間+全域性命名空間)

2)檢視區域性命名空間(變數名和函式資訊)的方法:locals()

print(locals())  #

列印區域性作用域中的內容

全域性不允許檢視呼叫區域性的內容;但區域性允許檢視呼叫全域性的內容

3)修改全域性變數的方法

修改方法: global()   #修改後的變數,其他人再呼叫就是修改後的值

flag =false

def login(): #

建立個函式

global flag #

獲取修改這個變數的許可權

uname = input("

使用者名稱:

") #

使用者登陸

upwd = input("

密碼:"

)

if uname == "

alex

"and upwd == "

123"

: flag = true #

如果登陸成功就修改全域性的變數

else

: flag = false #

如果不成功,保持原樣

def fatie():   #

發帖需求

if flag == true: #

只有上面登陸成功了,才會修改全域性變數,才可以發帖

print("

可以發帖")

else: #

檢視到沒有被修改就提示它,去登陸

print("

滾去登入")

login()

fatie()

fatie()

4)修改區域性變數的方法:

nonlocal()  #在區域性作用域範圍內,呼叫父級命名空間的變數,並獲得修改的許可權,從哪調就改哪的.區域性找不到就報錯

a= 50

deffuncl():

a = 10

deffunce2():

nonlocal a

#永不找全域性

a+=20

print("

最裡面的

",a)

funce2()

funcl()

輸出結果為:最裡面的 30

5)函式的巢狀:

就記住一點就行,def name() 只是建立了個函式,沒有被呼叫就是空,擺設;只有name()才是呼叫函式,這個函式才會啟動起來

6)函式的呼叫

1.如果指定了函式的呼叫者,那麼函式的返回值就會給呼叫者;  如果沒有指定呼叫者,那麼就只會執行函式體裡面的內容

2.函式名就相當於乙個變數名,只有函式名加(),函式體才會執行.

3.函式呼叫變數值的順序:先檢視本域  →→ 父級域 →→ 全域性作用域.

函式---命名空間和作用域(相關練習)

函式命名空間和作用域

內建 命名空間 python直譯器啟動之後就可以使用的變數 函式名 全域性 命名空間 在函式外面的變數名 函式名 區域性 命名空間 每乙個函式都擁有自己的命名空間 python直譯器執行 載入順序 所有 內建空間函式名 變數 逐行 載入全域性空間變數 函式名 區域性空間的變數 函式名 在呼叫函式的時...

函式命名空間和作用域

內建 命名空間 python直譯器啟動之後就可以使用的變數 函式名 全域性 命名空間 在函式外面的變數名 函式名 區域性 命名空間 每乙個函式都擁有自己的命名空間 python直譯器執行 載入順序 所有 內建空間函式名 變數 逐行 載入全域性空間變數 函式名 區域性空間的變數 函式名 在呼叫函式的時...

函式 命名空間和作用域

就是繫結變數名和變數值的地方 1 內建命名空間 在python直譯器中已經存在的內建方法就可以稱之為內建命名空間 如 len print open 2 全域性命名空間 1 定義 在py檔案中,頂格寫的都是全域性命名空間 2 注意 while true 條件下的第一縮排也屬於在全域性命名空間 如圖 3...