title: How to pass a dict as a positional argument, not a keyword argument
body: <p>I created a function (send_to_api) which takes three arguments. user_id and event_type take strings and event_properties takes a dictionary which I'm passing in as a positional argument. That's the format that is required by the external api. Here's a simplified version of the function:</p>
  
  <pre><code>def send_to_api(user_id, event_type, *args):
  
      event_args = {"user_id": user_id,
                "event_type": event_type,
                "event_properties": args}
  
      data = json.dumps(event_args)
      r = requests.post(url=url, data=data)
  </code></pre>
  
  <p>In a different place, the function gets called like this:</p>
  
  <pre><code>event_properties = {"property_1": "a", "property_whatever": "b"}
  
  send_to_api("my_user_id", "my_event", event_properties)
  </code></pre>
  
  <p>After familiarizing myself with *args and **kwargs I still seem to be doing something wrong because the event_properties dict doesn't get passed through. </p>
  
  <p>I think it's because I'm trying to pass a dictionary as a positional argument, could that be the reason? Or any other pointer as to where things are going wrong here?  </p>