title: Global dictionaries don't need keyword global to modify them?
body: <p>I wonder why I can change global dictionary without <code>global</code> keyword? Why it's mandatory for other types? Is there any logic behind this?</p>
  
  <p>E.g. code:</p>
  
  <pre><code>#!/usr/bin/env python3
  
  stringvar = "mod"
  dictvar = {'key1': 1,
             'key2': 2}
  
  def foo():
      dictvar['key1'] += 1
  
  def bar():
      stringvar = "bar"
      print(stringvar)
  
  print(dictvar)
  foo()
  print(dictvar)
  
  print(stringvar)
  bar()
  print(stringvar)
  </code></pre>
  
  <p>Gives following results:</p>
  
  <pre><code>me@pc:~/$ ./globalDict.py 
  {'key2': 2, 'key1': 1}
  {'key2': 2, 'key1': 2}  # Dictionary value has been changed
  mod
  bar
  mod
  </code></pre>
  
  <p>where I would expect:</p>
  
  <pre><code>me@pc:~/$ ./globalDict.py 
  {'key2': 2, 'key1': 1}
  {'key2': 2, 'key1': 1}  # I didn't use global, so dictionary remains the same
  mod
  bar
  mod
  </code></pre>