title: Why does unpacking give results in tuple
body: <p>I am learning arbitrary value parameter and reading stackoverflow <a href="https://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-parameters">this</a> and <a href="https://stackoverflow.com/questions/3394835/args-and-kwargs">this</a> answers and other tutorials I already understood what *args and **kwargs do in python  but I am facing some errors. I have two doubts, first one is:</p>
  
  <p>If I run this code print(w) then I am getting this output:</p>
  
  <pre><code>def hi(*w):
      print(w)
  
  kl = 1, 2, 3, 4
  hi(kl)
  </code></pre>
  
  <p>output:</p>
  
  <pre><code>((1, 2, 3, 4),)
  </code></pre>
  
  <p>but if I run this code with <code>print(*w)</code> then I am getting this output:</p>
  
  <p>code:</p>
  
  <pre><code>def hi(*w):
      print(*w)
  
  kl = 1, 2, 3, 4
  hi(kl)
  </code></pre>
  
  <p>output:</p>
  
  <pre><code>(1, 2, 3, 4)
  </code></pre>
  
  <p>My second doubt is:</p>
  
  <pre><code>je = {"a": 2, "b": 4, "c": 6, 4: 5}
  for j in je:
      print(*je)
  </code></pre>
  
  <p>output</p>
  
  <pre><code>b a 4 c
  b a 4 c
  b a 4 c
  b a 4 c
  </code></pre>
  
  <p>What exactly is <code>*je</code> doing there? How is it working in iteration?</p>