title: Issue calling lambda stored in dictionary
body: <p>I'm currently learning Python and playing with the concepts of dictionaries and lambda functions. I have an issue with the following code:</p>
  
  <pre><code>def helloName(name):
      print 'hello %s' % name
  
  myList = ['one', 'two', 'three']
  myDict = {}
  
  print '====' * 4
  
  for i in myList:
      myDict[i] = lambda: helloName(i)
      print i + ' : ' +  str(myDict[i])
  
  print '====' * 4
  
  myDict['one']()
  print myDict['one']
  myDict['two']()
  print myDict['two']
  myDict['three']()
  print myDict['three']
  
  print '====' * 4
  
  for i in myList:
      myDict[i]()
      print i + ' : ' +  str(myDict[i])
  </code></pre>
  
  <p>The output of this script is:</p>
  
  <pre><code>================
  one : &lt;function &lt;lambda&gt; at 0x0060C330&gt;
  two : &lt;function &lt;lambda&gt; at 0x01FB4FB0&gt;
  three : &lt;function &lt;lambda&gt; at 0x01FA9570&gt;
  ================
  hello three
  &lt;function &lt;lambda&gt; at 0x0060C330&gt;
  hello three
  &lt;function &lt;lambda&gt; at 0x01FB4FB0&gt;
  hello three
  &lt;function &lt;lambda&gt; at 0x01FA9570&gt;
  ================
  hello one
  one : &lt;function &lt;lambda&gt; at 0x0060C330&gt;
  hello two
  two : &lt;function &lt;lambda&gt; at 0x01FB4FB0&gt;
  hello three
  three : &lt;function &lt;lambda&gt; at 0x01FA9570&gt;
  </code></pre>
  
  <p>I don't understant the second block of outputed lines. I expected exactly the same output as the third block of outputed lines.</p>
  
  <p>Could you help me understanding the difference between both outputs and suggest a modification to have twice the same output?</p>