[英]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
。
如果x
和y
不同,则可以将x
和y
传递给函数:
def f(x, y):
return (x==y)
并将函数调用为:
filter(f(x['identity'], 'creosote'),skits)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.