1 else "Joe" + "." 当我运行时 python he-6ren">
gpt4 book ai didi

Python 优先级

转载 作者:行者123 更新时间:2023-11-28 21:21:14 27 4
gpt4 key购买 nike

用下面的代码

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 - The period '.'到底是失踪了。

但是,当我更改代码以使用 () 覆盖三元运算时,它可以正常工作。

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.

有人可以解释为什么当我没有用大括号覆盖三元运算符时会有不同的行为吗。

最佳答案

参见 documented operator precedence ;条件表达式具有唯一但最低的优先级,只有 lambda 较低。

您可能需要查看 string format syntax而不是手动连接字符串对象:

print "Hello {}.".format(sys.argv[1] if len(sys.argv) > 1 else "Joe")

关于Python 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21959424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com