上面的代码对我来说是合理的,因为我知道有必要使用关键字global来分配或修改全局变量。
global
但是,当我使用列表时,我可以访问全局变量而不使用关键字global。这是否意味着是否使用全局变量取决于变量的类型?在赋值或修改其他类型的变量(tuple,dic,...)时,我是否需要使用global?
g2ieeal71#
当我们在函数内部分配一个变量时,该变量默认是局部的。现在,如果我们看到pr()中发生的事情,函数a被赋值为:a += 1,即a = a + 1.当python到达/扫描这行代码时,它首先看到左侧a,然后放入它的本地作用域。当它看到右侧a时,然后发现没有值分配给a(成为局部变量)。这就是为什么它抛出错误。另一方面,list是可变的(原地可变)对象。这就是为什么赋值在可变对象(列表或字典)的情况下无关紧要。另外,字符串是不可变的,因此在赋值过程中会有不同的处理方式
1条答案
按热度按时间g2ieeal71#
当我们在函数内部分配一个变量时,该变量默认是局部的。现在,如果我们看到pr()中发生的事情,函数a被赋值为:a += 1,即a = a + 1.
当python到达/扫描这行代码时,它首先看到左侧a,然后放入它的本地作用域。当它看到右侧a时,然后发现没有值分配给a(成为局部变量)。这就是为什么它抛出错误。
另一方面,list是可变的(原地可变)对象。这就是为什么赋值在可变对象(列表或字典)的情况下无关紧要。
另外,字符串是不可变的,因此在赋值过程中会有不同的处理方式