有没有办法在python的lambd中执行“if”

2024-04-18 05:31:42 发布

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

在python 2.6中,我想:

f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception

这显然不是语法。是否可以在lambda中执行if,如果可以,如何执行?

谢谢


Tags: lambdaanifexception语法elseraisethrow
3条回答

您要查找的语法:

lambda x: True if x % 2 == 0 else False

但在lambda中不能使用printraise

如果你真的想这么做的话,你可以很容易地在lambda中引发异常。

def Raise(exception):
    raise exception
x = lambda y: 1 if y < 2 else Raise(ValueError("invalid value"))

这是个好主意吗?一般来说,我的直觉是不让lambdas报告错误;让它的值为None,并在调用者中引发错误。我不认为这是天生的邪恶,但是——我认为“y if x else z”语法本身更糟糕——只要确保你没有试图在lambda体中塞进太多东西。

为什么不定义一个函数呢?

def f(x):
    if x == 2:
        print(x)
    else:
        raise ValueError

在这种情况下确实没有理由使用lambda。

相关问题 更多 >