Globale Wörterbücher benötigen kein globales Schlüsselwort, um sie zu ändern? [Duplikat]

Mögliche Duplikate:
Warum ist das Schlüsselwort global in diesem Fall nicht erforderlich?

Ich frage mich, warum ich das globale Wörterbuch ohne ändern kannglobal Stichwort? Warum ist es für andere Typen obligatorisch? Gibt es eine Logik dahinter?

Z.B. 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)

Gibt folgende Ergebnisse:

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

wo ich erwarten würde:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage