连接相邻字符串文字时的 Python 运算符优先级
Posted
技术标签:
【中文标题】连接相邻字符串文字时的 Python 运算符优先级【英文标题】:Python operator precedence when concatenating adjacent string literals 【发布时间】:2017-08-14 13:24:46 【问题描述】:文档说两个相邻的字符串文字是连接在一起的。例如:
>>>print("py" "thon")
python
但是,这个特性是在编译时实现的,而不是像 + 和 * 运算符那样在运行时实现,所以会出现这个有趣的效果:
>>>print(2 * "py" + "thon")
pypython
>>>print(2 * "py" "thon")
pythonpython
我理解为什么会在该语言中发生这种情况,但我想不出为什么会这样。有什么原因吗,还是更容易让它不理会?
【问题讨论】:
python 要求将内容放在一行中的又一个漏洞。 我猜这是因为python在第一种情况下没有将文字连接视为操作。 docs.python.org/2/reference/… 【参考方案1】:坦率地说,如果我今天要设计python
,我会做
print ("py" "thon")
语法错误
同
print (5 3)
我猜想连接相邻字符串的原因是为了与 bash / perl 保持一致
echo "py""thon"
【讨论】:
这很好。现在我想起来了,我知道没有什么场景是你不能使用 + 运算符的。 有充分的理由允许字符串文字连接用于可视化目的(请参阅:***.com/questions/2504536/…)。但是,问题是为什么这是在编译时而不是运行时实现的以上是关于连接相邻字符串文字时的 Python 运算符优先级的主要内容,如果未能解决你的问题,请参考以下文章