title: How did print(*a, a.pop(0)) change?
body: <p>This code:</p>
  <pre><code>a = [1, 2, 3]
  print(*a, a.pop(0))
  </code></pre>
  <p>Python 3.8 prints <code>2 3 1</code> (does the <code>pop</code> before unpacking).<br />
  Python 3.9 prints <code>1 2 3 1</code> (does the <code>pop</code> after unpacking).</p>
  <p>What caused the change? I didn't find it in the <a href="https://docs.python.org/3/whatsnew/changelog.html#changelog" rel="noreferrer">changelog</a>.</p>
  <p>Edit: Not just in function calls but also for example in a <a href="https://docs.python.org/3.8/reference/expressions.html#list-displays" rel="noreferrer">list display</a>:</p>
  <pre><code>a = [1, 2, 3]
  b = [*a, a.pop(0)]
  print(b)
  </code></pre>
  <p>Prints <code>[2, 3, 1]</code> vs <code>[1, 2, 3, 1]</code>. And <a href="https://docs.python.org/3.8/reference/expressions.html#expression-lists" rel="noreferrer">Expression lists</a> says <em>&quot;The expressions are evaluated from left to right&quot;</em> (that's the link to Python 3.8 documentation), so I'd expect the unpacking expression to happen first.</p>