函式的命名空間和作用域 閉包(筆記)

2022-07-09 13:12:14 字數 960 閱讀 7331

命名空間

內建命名空間——python直譯器

python直譯器一啟動就可以使用的名字儲存在內建命名空間中,內建的名字在啟動直譯器的時候被載入進記憶體

全域性命名空間——我們寫的**但不是函式中的**

是在程式從上到下被執行的過程中依次載入進記憶體的,放置了我們設定的所有變數名和函式

區域性命名空間——函式

函式內部定義的名字,當呼叫函式的時候才會呼叫這個命名空間,隨著函式執行的結束這個命名空間就又消失了

1. 在區域性:可以使用全域性、內建命名空間中的名字

2. 在全域性:可以使用內建空間中的名字,但不能使用區域性空間的命名

3. 在內部:不能使用全域性和區域性的命名

作用域

作用域鏈 :

小範圍用變數的時候,先從自己的名字空間找,

找不到就一層一層向外層找,知道找到為止。

找不到就報錯。

函式的巢狀呼叫和巢狀定義

定義在函式內部的函式不能被外界直接呼叫

內部函式可以使用外部的變數

函式名的本質

就是一串記憶體位址

可以賦值、可以作為容器型別的元素、函式的引數和返回值 —— 第一類物件

閉包 : 內部函式使用外部函式的變數

def outer():

a = 1

def inner():

print(a)

return inner

i = outer()

i()

函式物件,函式巢狀,命名空間,作用域,閉包函式

一 函式物件 函式是第一類物件 值的記憶體位址可以像變數一樣去使用 def foo foo 函式的記憶體位址,可以當做一種變數值去使用 1 函式可以被引用 def foo print hello f foo print f f 2 可以當作引數傳遞 def foo print hello def b...

命名空間與作用域,函式物件,函式巢狀,閉包函式

命名空間的分類 全域性命名空間 在py檔案中頂格編寫的 執行之後都會存入全域性命名空間 區域性命名空間 函式體 執行之後產生的都是區域性命名空間 內建命名空間 input built in 內建 全域性命名空間 x 10 變數名x y 20 變數名y f 1 0 z 30 with open a.t...

第 13 函式巢狀,命名空間與作用域,閉包函式

目錄 一.函式巢狀 1.函式巢狀定義 在乙個函式內又定義了另外乙個函式 2.函式巢狀呼叫 3.區域性命名空間 函式內的名字 示範2 站在區域性進行查詢 示範3 示範4 注意 示範5 3.作用域 4.函式的引數傳遞是值拷貝 示範1 對全域性定義的不可變型別,不可以在函式內直接修改 示範2 對全域性定義...