Python方式:三元vs或

时间:2019-07-17 14:38:15

标签: python logical-operators ternary-operator

我真的只是想知道,当涉及到这种情况时,Python的处理方式是什么?使用SELECT p.name, GROUP_CONCAT(v.place) AS VisitedPlaces FROM Person AS p INNER JOIN Visits AS v ON p.id = v.person_id WHERE p.name = 'Ram' ; 三元或if else

or

编辑:我更新了该问题以忽略语义,我主要是想知道哪个表达式更符合pythonic。

2 个答案:

答案 0 :(得分:3)

这是引入的条件运算符的情况;使用它。

string += x if x else y  # Or ... if x is not None ... if the distinction is necessary

通常,当您只关心表达式的真实性而不关心正在考虑真实性的“实际”值时,请使用or

之所以引入条件表达式,是因为许多人试图像这样编写代码

<condition> and x or y

但这是一个微妙的错误:如果条件为真,则意图是使表达式等于x,但是如果条件两者都等于x x是正确的。

答案 1 :(得分:1)

xy都可以为None的情况下,您可以执行更详细的操作:

>>> string = ""
>>> x, y = (None, None)
>>> string += x if x else y if y else '' # Fallback to empty string
>>> string
''