【发布时间】:2023-03-12 05:29:01
【问题描述】:
使用以下代码
import sys
print "Hello " + sys.argv[1] if len(sys.argv) > 1 else "Joe" + "."
当我跑步时
-
python hello.py,我得到Joe.-Hello不见了。 -
python hello.py Nick,我得到Hello Nick- 句号“。”到底不见了。
但是,当我更改代码以使用() 覆盖三元运算时,它可以正常工作。
import sys
print "Hello " + (sys.argv[1] if len(sys.argv) > 1 else "Joe") + "."
当我跑步时
-
python hello.py,我得到Hello Joe. -
python hello.py Nick,我得到Hello Nick.
有人可以解释为什么当我不使用大括号覆盖三元运算符时会出现不同的行为。
【问题讨论】:
-
它被称为conditional expression;它是 a 三元运算符。它恰好是目前唯一的三元运算符,但您也不会一直调用
+和and二元运算符。 -
这是
format提供帮助的地方。print "Hello {}.".format(sys.argv[1] if len(sys.argv) > 1 else "Joe"):)
标签: python conditional-operator operator-precedence