python中的常量lambda函数

nos*_*nos 1 python lambda constants

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

我需要它来评估表达式

lam (array[1,2,3,4,5])
Run Code Online (Sandbox Code Playgroud)

现在我用了

lam = lambda t: 1 + t*0 
Run Code Online (Sandbox Code Playgroud)

它有效,但它太浪费了吗?

Bri*_*sey 6

通常使用 _ 来表示未使用的参数

lam = lambda _: 1
Run Code Online (Sandbox Code Playgroud)


Sin*_*ion 5

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

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

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

#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])
Run Code Online (Sandbox Code Playgroud)

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

modified_list = [1 for ignored in [1, 2, 3, 4, 5]]
Run Code Online (Sandbox Code Playgroud)

它阅读起来更容易,而且速度更快!