python中Lambdafunction的比较

2024-05-13 19:16:05 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,不能直接比较lambda表达式创建的函数:

>>> (lambda x: x+2) == (lambda x: x+2)
False

我做了一个例行程序来散列拆卸过程。在

^{pr2}$

用法是:

>>>> get_lambda_hash(lambda x: x+2) == get_lambda_hash(lambda x: x+1)
False

>>>> get_lambda_hash(lambda x: x+2) == get_lambda_hash(lambda x: x+2)
True

这个问题还有更优雅的解决方案吗?在


Tags: lambda函数falsetrue用法get表达式过程
1条回答
网友
1楼 · 发布于 2024-05-13 19:16:05

如果您坚持执行这种疯狂的行为,请比较每个字节码和常量。在

>>> import operator
>>> coco = operator.attrgetter('co_code', 'co_consts')
>>> coco((lambda x: x+2).__code__) == coco((lambda x: x+2).__code__)
True
>>> coco((lambda x: x+2).__code__) == coco((lambda x: x+1).__code__)
False
>>> def foo(y):
...   return y + 2
... 
>>> coco((lambda x: x+2).__code__) == coco(foo.__code__)
True

相关问题 更多 >