2024-04-18 05:31:42 发布
网友
在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,如果可以,如何执行?
lambda
if
谢谢
您要查找的语法:
lambda x: True if x % 2 == 0 else False
但在lambda中不能使用print或raise。
print
raise
如果你真的想这么做的话,你可以很容易地在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。
您要查找的语法:
但在lambda中不能使用
print
或raise
。如果你真的想这么做的话,你可以很容易地在lambda中引发异常。
这是个好主意吗?一般来说,我的直觉是不让lambdas报告错误;让它的值为None,并在调用者中引发错误。我不认为这是天生的邪恶,但是——我认为“y if x else z”语法本身更糟糕——只要确保你没有试图在lambda体中塞进太多东西。
为什么不定义一个函数呢?
在这种情况下确实没有理由使用lambda。
相关问题 更多 >
编程相关推荐