我想知道为什么我可以在没有使用
例如代码:
给出以下结果:
global
关键字的情况下更改全局字典? 为其他类型强制使用这个关键字的原因是什么? 这背后有何逻辑?例如代码:
#!/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)
给出以下结果:
me@pc:~/$ ./globalDict.py
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 2} # Dictionary value has been changed
mod
bar
mod
我期望的是:
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
global
的情况下字典是如何工作的,但我仍然不明白为什么Python根据变量类型有不同的范围访问方式? - Jovik