Python函式高階之函式命名空間

2021-10-25 09:36:01 字數 1675 閱讀 4907

命名空間指的是儲存程式中的變數名和值的地方。命名空間的本質是乙個字典,用來記錄變數名稱和值。字典的key是變數的名稱,字典的value對於的是變數的值。

例如 命名空間一共分為三種:區域性命名空間、全域性命名空間、內建命名空間

區域性空間:

每個函式都有自己的命名空間,叫做區域性空間,它記錄了函式的變數,包括函式的引數 和區域性定義的變數

全域性空間:

每個模組擁有它自已的命名空間,叫做全域性命名空間,它記錄了模組的變數,包括函式、 類、其它匯入的模組。

內建命名空間:

任何模組均可訪問它,它存放著內建的函式和異常。

input,print,str,list,tuple…

區域性命名空間使用 locals() 函式來訪問

全域性命名空間的訪問使用globals()函式訪問。

區域性命名空間:

def

func

(name,age)

: num=

10 ret=

locals()

print

(ret)

func(

'zs',20

)

全域性命名空間:

a=

10def

func

(name,age)

: num=

10 ret=

locals()

print

(ret)

func(

'zs',20

)ret=

globals()

print

(ret)

很多內建變數名稱。

內建命名空間(程式執行前載入)->全域性命名空間(當程式執行的時候載入全域性命名空間)->區域性命名空間(程式執行中:函式被呼叫時才載入)當函式返回結果 或 丟擲異常時,被刪除。每乙個遞迴呼叫的函式都擁有自己的命名空間。

print

('***')a=

10b=

20def

func()

:name=

'zs'

age=

10print

(name,age)

func(

)

當使用某個變數的時候,先從區域性命名空間中找,如果能找到則停止搜尋,如果找不到在去全域性命名空間中查詢,如果找到則停止搜尋,如果找不到則到內建命名空間中查詢,如果找不到則報錯。

def

func()

:print(id

)func(

)

巢狀函式的情況:

1、先在當前 (巢狀的或 lambda) 函式的命名空間中搜尋

2、然後是在父函式的命名空間中搜尋

3、接著是模組命名空間中搜尋

4、最後在內建命名空間中搜尋

def

outter()

:def

inner()

:print(id

) inner(

)outter(

)

python之函式高階

概念預設引數是指函式或者方法在定義時為形參賦值,對應的形參為預設引數。預設引數是乙個引數定義時的概念,與呼叫無關 作用如果引數定義了預設引數,在呼叫方法或函式時,如果衛隊該引數進行傳值,則使用預設值作為該引數的值。語法 定義 def 函式名 形參1 值1,函式體.呼叫 函式名 實參 格式一 傳入實參...

python函式之高階 函式巢狀,命名空間,閉包

目錄2 函式命名空間與查詢順序 二 命名空間名字的查詢順序 3 函式作用域 4 函式的引數傳遞都是值拷貝 5 閉包函式 一 什麼是函式巢狀在乙個函式內又定義了另外乙個函式二 函式定義def foo def bar print from bar bar foo 這個是通過foo函式呼叫裡面的bar函式...

python 函式高階 python 函式高階

形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...