擅长:python、mysql、java
<p><a href="http://docs.python.org/reference/expressions.html#evaluation-order">Python's order of operations</a>是从左到右,除非PEMDAS适用。字符串插值运算符显然与模和乘法具有相同的优先级,因为如果您颠倒顺序,使乘法位于插值的左侧,则它优先:</p>
<pre><code>>>> print 3 * "a foo %s" % 'hi'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string
>>> print 3 * "a foo %s" % ('hi', 'ho', 'yo')
a foo hia foo hoa foo yo
</code></pre>
<p>然而,正如您所演示的,求幂运算胜过从左到右的顺序。在</p>
<p>更新:在这个<a href="http://docs.python.org/reference/expressions.html#binary-arithmetic-operations">same document under Binary Arithmetic Operations</a>中,它陈述了一些表面上明显,但隐含相关的东西:</p>
<blockquote>
<p>…the % operator is also overloaded by string and unicode objects to
perform string formatting (also known as interpolation).</p>
</blockquote>
<p>虽然这似乎只是告诉你<code>%</code>运算符<em>做了什么,但我认为它的位置和上下文也告诉你,无论它是用作<em>模</em>还是<em>插值</em>都具有相同的优先级。在</p>