Python 空間名稱與閉包函式

2022-06-24 05:09:15 字數 1079 閱讀 1319

命名空間 namespaces:存放名字的地方,是對棧區的劃分

命名空間在棧區中分為三種,詳細的劃分不同的空間,不同空間可以存放相同名字的名字

存放的名字:存放的python解析器內建的名字

存活週期:python解析器啟動則產生,python解析器關閉則銷毀

存放的名字:執行頂級**所產生的名字,不是函式內定義的以及不是python自帶的名字

存活週期:python檔案執行則產生,python檔案執行完畢後銷毀

存放的名字:在呼叫函式時,執行函式體**的過程中產生的函式內的名字

存活週期:在呼叫函式時存活,函式呼叫完畢後銷毀

內建命名空間 > 全域性命名空間 > 區域性命名空間

區域性命名空間 > 全域性命名空間 > 內建命名空間

從當前位置線上一層一層查詢

例如:當前在區域性命名空間

區域性命名空間 > 全域性命名空間 > 內建命名空間

以函式定義階段為準,與函式呼叫位置無關

x = 1

def func():

print(x)

def foo():

x = 222

func()

foo()

#輸出結果

1

全域性作用域:內建命名空間、全域性命名空間

全域性存活

全域性有效:被所以函式共享

區域性作用域:區域性命名空間

臨時存活

區域性有效:函式內有效

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

核心:名字的查詢關係是以函式定義階段為準

「閉」函式是指該函式是內嵌函式

「包」函式是指該函式包含對外層函式作用域的引用(不是對全域性作用域)

def f1():

x = 1

def f2():

print(x)

return f2 #返回f2的記憶體位址,f2函式物件

x = 111111

f = f1() #把f2的記憶體位址給f

f() #執行f2函式

#輸出結果

1

python函式巢狀閉包 閉包與巢狀函式

沒有區別,因為沒有閉合函式,不是真的。有closures,但這一術語指的是在外部和內部範圍中儲存變數的技術。只剩下巢狀函式。在 巢狀函式只是在另乙個函式內部定義的函式 def outer def inner 當outer 定義了乙個inner 然後也使用的名稱,則該變數名稱為閉包單元,儲存在inne...

Python 函式物件與閉包

函式物件指的是函式可以被當做 資料 來處理,具體可以分為四個方面的使用。def index print from index a index a def foo x,y,func print x,y func def bar print from bar foo 1,2,bar 1 2 from b...

python閉包函式

python函式閉包 closure 比較抽象,在函式式程式設計中運用地比較多,通俗點就是子函式 內嵌函式 呼叫上層函式 閉包函式 的變數,且上層函式 閉包函式 接收的變數會儲存在子函式 內嵌函式 的變數中可以供子函式 內嵌函式 呼叫 概念很抽象,但是實現的例子還是比較容易理解的,這裡記住實現函式閉...