考虑一个返回两个数字的函数:
def func():
# ....
return a,b
将比较运算符==
应用于函数结果的最简单方法是什么?
我已经尝试过lambda
但我正在寻找简单的东西:-
q = lambda x, y: x == y
[q(*func()) for i in range(16)]
我能想到的最短方法是检查
len(set(func())) == 1
(没有警告,因为你说它们是两个数字,所以可以散列(
但我个人只是将函数的结果分配给一个变量,然后以正常方式进行操作。
编辑:哦,现在我明白你的lambda了;它已经存在operator.eq
:
from operator import eq
eq(*func())
比较整洁。
如果可以修改func()
,则可以向其添加第三个返回值,该值将指示前两个返回值是否相等,
from random import randint
def fun():
a = randint(0,5)
b = randint(0,5)
return a, b, a == b
res = [fun()[2] for i in range(10)]
如果你不能修改func()
那么你也可以使用装饰器,尽管它并不是更简单,也许只是比lambda更健壮和清晰:
from random import randint
def elem_equal(func):
def wrapper():
a,b = func()
return a == b
return wrapper
@elem_equal
def fun():
a = randint(0,5)
b = randint(0,5)
return a, b
res = [fun() for i in range(10)]
装饰器elem_equal
调用目标函数func()
并返回其返回值的比较。