繁体   English   中英

python为lambda函数赋予另一个名称

[英]python ascribing another name to lambda function

这是一个小问题:

我有一段带有很多filter-map-reduce函数的python代码。

我发现重新输入它有点痛苦。

filter(lambda x: x['identity'] == 'creosote', skits)

每一次。 我希望能够做类似的事情

filter(f(x['identity']==creosote),skits)

代替。 我试过了 :

 def f(y):
    f = lambda(x: y) 

但这似乎不起作用。 谢谢

我收到一个NameError: name 'x' is not defined

我正在试图完成的是“符号链接” lambda x:的东西,这样我就不必键入它。

你可以这样做:

def f(x):
    return x['identity'] == 'creosote'

然后,您只需要执行filter(f, skits)

如果没有调用f 之前对表达式x['identity'] == 'creosote'进行求值就无法获得类似f(x['identity'] == 'creosote')东西(这意味着,除其他外,必须在封闭范围内定义变量x )。 如果要推迟执行,则必须将表达式放在函数中,可以使用lambda或完整def

Python没有允许您按照建议的方式进行“符号链接”的宏。 在Python中,您不能将某些文本别名为其他文本。 您只能评估格式正确的表达式。 lambda不是函数,它是Python语法的一部分,因此您不能将其作为其他别名,就像您不能先执行plus = +然后执行4 plus 3

如果xy不同,则可以将xy传递给函数:

def f(x, y):
   return (x==y)

并将函数调用为:

filter(f(x['identity'], 'creosote'),skits)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM