我一直在学习关于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'''不知道'' –