原因是行
stringvar = "bar"
是模糊的,也可能是指一个全局变量, 或者
它可以被称为创建新的本地变量
stringvar。在这种情况下,除非
global已使用关键字,否则Python默认将其假定为局部变量。
但是,线
dictvar['key1'] += 1
完全是明确的。它只能引用全局变量
dictvar,因为
dictvar必须已经存在该语句才不会引发错误。
这并非仅针对字典-列表也是如此:
listvar = ["hello", "world"]def listfoo(): listvar[0] = "goodbye"
或其他种类的物体:
class MyClass: foo = 1myclassvar = MyClass()def myclassfoo(): myclassvar.foo = 2
每当使用mutation操作而不是重新绑定操作时,都是如此。



