为什么一行 if 语句没有给出例外结果



我正在尝试使用一行,如果我的程序中的条件,但它并没有向我展示其他字符串,我认为这是因为该陈述是真实的,并且该程序认为如果语句为false,则必须执行其他代码。

In [506]: string = "wow"
In [507]: string = string + "omg" if string == "wow" else "" + "why this doesn't get added?" if 1 == 1 else ""
In [508]: string
Out[508]: 'wowomg'

我希望string'wowomgwhy this doesn't get added?'

它与操作员优先级有关,在第一个if-else之前对整个+进行了评估。

尝试这个

string = "wow"
string = (string + "omg" if string == "wow" else "") + ("why this doesn't get added?" if 1 == 1 else "")
print(string)

输出:

WOWOMGWO WHY WHO WHO WHO WHO WHO WHO WHO WHO

您的原始代码等于

string = (string + "omg" if string == "wow" else ("" + "why this doesn't get added?" if 1 == 1 else ""))

最新更新