Dicionários globais não precisam de palavra-chave global para modificá-los? [duplicado]
Duplicata Possível:
Por que a palavra-chave global não é necessária neste caso?
Eu me pergunto por que eu posso mudar o dicionário global semglobal
palavra-chave? Por que é obrigatório para outros tipos? Existe alguma lógica por trás disso?
Por exemplo. 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)
Dá os seguintes resultados:
me@pc:~/$ ./globalDict.py
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 2} # Dictionary value has been changed
mod
bar
mod
onde eu esperaria:
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