title: Why is foo(*arg, x) not allowed in Python?
body: <p>Look at the following example</p>
  <pre><code>point = (1, 2)
  size = (2, 3)
  color = 'red'
  
  class Rect(object):
      def __init__(self, x, y, width, height, color):
          pass
  </code></pre>
  <p>It would be very tempting to call:</p>
  <pre><code>Rect(*point, *size, color)
  </code></pre>
  <p>Possible workarounds would be:</p>
  <pre><code>Rect(point[0], point[1], size[0], size[1], color)
  
  Rect(*(point + size), color=color)
  
  Rect(*(point + size + (color,)))
  </code></pre>
  <p>But why is <code>Rect(*point, *size, color)</code> not allowed, is there any semantic ambiguity or general disadvantage you could think of?</p>
  <h3>EDIT: Specific Questions</h3>
  <p>Why are multiple *arg expansions not allowed in function calls?</p>
  <p>Why are positional arguments not allowed after *arg expansions?</p>