python - 为什么一行 if 语句没有给出异常结果
问题描述
我试图在我的程序中使用一行 if 条件,但它没有显示 else 之后的字符串,我认为这是因为语句为 True 并且程序认为 else 之后的代码必须执行,如果语句是错误的。
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?'
解决方案
它与运算符优先级有关,整个+
在 first 之前评估if-else
。
尝试这个
string = "wow"
string = (string + "omg" if string == "wow" else "") + ("why this doesn't get added?" if 1 == 1 else "")
print(string)
输出:
wowomg为什么没有添加?
您的原始代码相当于
string = (string + "omg" if string == "wow" else ("" + "why this doesn't get added?" if 1 == 1 else ""))
推荐阅读
- ruby-on-rails - 使用 Grape 将数组中的多个对象组合为 json
- javascript - 地图搜索栏没有加载位置,有什么想法吗?
- r - 在 lubridate 中转换 unix 时区的问题
- machine-learning - 逻辑回归的准确性
- python - 我可以从c ++调用用cupy代码编写的cuda代码吗?
- python - 为什么 ipython 不能从交互式控制台正确渲染 Qt 窗口?
- php - 向 requestb.in 发送支付网关响应
- swift - 如何使用 NSPredicate 判断 Int 列表是否包含 Int 数?
- reactjs - Context.Consumer 没有使用来自 Context.Provider 的值
- mysql - 对于一对多关系,如果表 B 不引用 A 的某些行,如何获取表 A 的每一行?