我一直在學習關於Python函數和函數的一般情況,並且我遇到了匿名函數的這種想法,其優點顯然是保持名稱空間清潔以及不分配額外的內存,因爲一個函數只被分配給一個變量纔會被執行。多個匿名Python函數的包裝
在Python中,根據我的理解,創建匿名函數的唯一方法是將它們包裝在另一個函數中。所以,我想出了創建在代碼中的多個匿名函數一個容器中,並通過它實質上是一個帶有參數調用包裝選擇解決這些問題的思路:
def anonwrap(selector):
if selector == "addition":
def anon(param1, param2):
return param1 + param2
return anon
elif selector == "the meaning of life":
def anon(param1):
return param1 + " 42"
return anon
else:
def anon(*args, **kwargs):
print("no idea")
return anon
select = anonwrap("addition")
print(select(10, 20))
select = anonwrap("the meaning of life")
print(select("the meaning of life is"))
select = anonwrap("hello")
print(select("blah", 9001))
我的問題是,一旦anonwrap
功能在代碼中被定義,解釋器是否爲所有內部函數自動分配內存,或者只是在從主代碼調用特定內部函數時才分配內存?
這段代碼有多有效?
我相信當你說'匿名'函數將會是'lambda'時[這裏](http://www.diveintopython.net/power_of_introspection/lambda_functions.html) –
謝謝你的回覆。我知道lambda。不幸的是,Python中的lambda表達式僅限於單個表達式,並且他們不接受使用語句或將其他函數包含在其身體中。 – Regardless
也只是出於好奇,爲什麼第三個'anon'函數'print'而不是'return'''不知道'' –