在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中引发异常,但这是Python 3中的一种方式。X来做一些接近你的例子的事情:

f = lambda x: print(x) if x==2 else print("exception")

另一个例子:

如果M为0则返回1

f = lambda x: 1 if x=="M" else 0

其他回答

你要找的语法:

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

但是你不能在lambda中使用print或raise。

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

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

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

在lambda中执行if的一个简单方法是使用列表推导式。

你不能在lambda中引发异常,但这是Python 3中的一种方式。X来做一些接近你的例子的事情:

f = lambda x: print(x) if x==2 else print("exception")

另一个例子:

如果M为0则返回1

f = lambda x: 1 if x=="M" else 0

下面是使用Python 3.x的解决方案!

>>> f = lambda x: print(x) if x == 2 else print("ERROR")
>>> f(23)
ERROR
>>> f(2)
2
>>> 

这段代码应该可以帮助您:

x = lambda age: 'Older' if age > 30 else 'Younger'

print(x(40))