Python作用域、字典和变量的区别?

And*_*eas 5 python dictionary scope

Python 范围 我有同样的问题,但略有不同。

number = 0
def incrementNumber():
    number += 1
Run Code Online (Sandbox Code Playgroud)

上面的这个不起作用,但下面的这个为什么?两者都在函数范围之外。

number = {'num':0}
def incrementNumber():
    number['num'] += 1
Run Code Online (Sandbox Code Playgroud)

如果我将变量添加为全局变量,则第一个有效

number = 0
def incrementNumber():
    global number
    number += 1
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 4

查看这篇博客文章,它与您正在做的事情类似。特别是亚当的评论。

您不分配给dictionaryVar,而是分配给dictionaryVar['A']。所以它永远不会被分配,所以它是隐式全局的。如果您实际分配给dictionaryVar,您会得到您“期望”的行为。