命名空間
內建命名空間——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 對全域性定義...