Python,带有函数调用的if else语句的简明代码?

时间:2017-09-20 02:04:11

标签: python

我想知道下面的代码片段是否有更简洁的代码。

def fun(x):
    return x + 2
a = 3
x = fun(a)
m = x if x == 3 else 4

print(m)

这会有用吗?

def fun(x):
    return x + 2

m = (x = fun(3)) if x == 3 else 4

print(m)

2 个答案:

答案 0 :(得分:2)

如果您决定将其设为单行,并且由于某种原因您只能拨打fun一次,则可以使用lambda函数:

m = (lambda x: x if x == 3 else 4)(fun(a))

你可以看到这不是非常易读,我也不推荐它。

您的试用代码不起作用,因为您无法在表达式中进行分配。

答案 1 :(得分:1)

可以这样做,但它不是非常易读/可维护的代码:

m, = [ x if x == 3 else 4   for x in [fun(a)] ]

x的赋值在列表推导中用作循环变量后仍然存在。因此,此单行可以按照您想要的方式分配mx