python中的常量lambda函数

时间:2011-12-15 22:25:37

标签: python constants lambda

如何在python中定义一个常量lambda函数?

我需要它来评估像

这样的表达式
lam (array[1,2,3,4,5])

现在我用

lam = lambda t: 1 + t*0 

它有效但是太浪费了吗?

4 个答案:

答案 0 :(得分:5)

如果你只想拥有一个返回相同内容的函数,无论它调用什么参数,那就是A-OK!您没有任何义务使用您的任何论据。

在python中,lambda是一个没有名称的函数(以及其他一些不相关的限制)

如果要使用lambda表达式并立即将其返回值赋给变量,则为函数指定名称。不要那样做,只需定义一个常规函数。当你需要将一个函数传递给另一个函数时,你应该达到lambda,你想要使用的函数很少,甚至不值得一个名字(比如它总是返回1)。 Python有一些这样的“高阶函数”(将其他函数作为参数的函数),mapfilterreduce都在内置命名空间中。

#never!
always_return_one = lambda ignored_argument: 1

#OK: functions with names are def'ed not lambda'd
def always_return_one(ignored_argument):
    return 1

#Also OK: pass the lambda to another function as soon as you spell it.
modified_list = some_highorder_function(lambda ignored: 1, [1, 2, 3, 4, 5])

python中一些最常用的高阶函数有一个特殊的语法。在上面的例子中,如果函数是map,你可以像这样使用列表推导:

modified_list = [1 for ignored in [1, 2, 3, 4, 5]]

它读起来更容易一致更快

答案 1 :(得分:3)

将_用于未使用的参数

是常规的
lam = lambda _: 1

答案 2 :(得分:2)

如果您希望lambda函数忽略其参数并始终返回1,则只需不要使用参数:

lam = lambda t: 1

答案 3 :(得分:1)

如何:

[1] * len(array)