¿Los diccionarios globales no necesitan una palabra clave global para modificarlos? [duplicar]

Posible duplicado:
¿Por qué no se requiere la palabra clave global en este caso?

Me pregunto por qué puedo cambiar el diccionario global singlobal ¿palabra clave? ¿Por qué es obligatorio para otros tipos? ¿Hay alguna lógica detrás de esto?

P.ej. código:

#!/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)

Da los siguientes resultados:

me@pc:~/$ ./globalDict.py 
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 2}  # Dictionary value has been changed
mod
bar
mod

donde esperaría

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta