Python 中的閉包就像「記憶體配備」函數。它們允許函數記住創建它的環境中的值,即使該環境不再存在。閉包用於函數式程式設計、事件處理和回呼函數,在這些函數中,您需要在不使用全域變數的情況下保留某些狀態。
閉包是一個保留對其詞法範圍的存取的函數,即使該函數在該範圍之外執行也是如此。當封閉函數傳回內部函數時,您會得到一個具有擴展範圍的函數物件。
換句話說,閉包是捕獲在其封閉作用域中定義的對象的函數,允許您在其主體中使用它們。此功能可讓您在需要在連續呼叫之間保留狀態資訊時使用閉包。
閉包在專注於函數式程式設計的程式語言中很常見,Python 支援閉包作為其各種功能的一部分。
在 Python 中,閉包是您在另一個函數中定義並從另一個函數傳回的函數。這個內部函數可以保留在內部函數定義之前的非本地作用域中定義的物件。
def outer_function(x):
# Outer function: takes 'x' and defines inner_function
def inner_function(y):
return x + y # 'x' is remembered from outer_function
return inner_function # Returns inner function (closure)
# Create a closure with x = 10
closure = outer_function(10)
# Call the closure with different values of 'y'
print(closure(5))
print(closure(20))