我想知道下面的代码片段是否有更简洁的代码。
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)
答案 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
的赋值在列表推导中用作循环变量后仍然存在。因此,此单行可以按照您想要的方式分配m
和x
。