a = val1 if condition else val2
,但有没有办法做到像
a if condition else b = val
会抛出一个SyntaxError
(这是可以理解的,我想)
我将使用条件,
if condition:
a = val
else:
b = val
但我讨厌在我的程序中有两个相同的代码(在这里,右边)两次(在我的真实代码中,val
是一个不平凡的表达式)。我知道我可以制作一个虚拟变量来保存这部分内容,但这似乎不符合惯例。
它也发生在我做一个元组
ba = (b,a)
ba[bool(condition)] = val
b, a = ba
但也显得非常不地道。
有没有另一种方法,我没有想到?
'A,b = VAL,b如果COND ELS e a,val'是一行,但仍然重复'val'。 –
这是一个奇怪的要求。将非平凡表达式的结果分配给相应命名的变量是一种更好的做法。例如。 topTenDebtCustomers或其他。然后,您可以像在if/else语句中那样将该值分配给“a”或“b”,这是正确的方式。这不是一个“虚拟”变量,不是非惯用的,恰恰相反。您希望消除命名变量以保存一行代码,这使您成为一个糟糕的程序员。 – aaa90210
@aaa在使我问这个问题的情况下,'val'的含义完全由'condition'确定。所以没有语义上有效的标签(除了'maybe_a_maybe_b'之外)。这是一个彻头彻尾的情况,但我想知道人们认为正确的方式是什么。当然,情况经常如此,我最终采取了完全不同的方法,而不需要这样做。尽管如此,它在理论上可能会发生。 – phsyron