列表变为“全局” - 蟒蛇

时间:2016-09-19 07:16:19

标签: python

标题不是问题。这个问题我已经通过理解“不可变和可变”的东西解决了。 但是,我想对此有所了解。 如果我不接受他并使第一个创建阴影,那么究竟允许该对象被另一个函数加入。 我给你看了代码:

def text():
    print x

x = 6
text()

这个例子很好用,因为我没有创建一个不可变的新对象。 但是这个:

def text():
    print x

text()
x = 6

这不起作用,因为整数不是全局变量。

当我创建一个没有全球化的新对象时,究竟发生了什么?在这个对象的内存中,允许我通过另一个范围接近它。为什么它如此不同,只是一个全球性的?

1 个答案:

答案 0 :(得分:0)

在函数内部,如果分配给变量并且不对其使用global,那么该变量是本地的。如果你只是使用一个变量并且没有赋值给它,那么它假定来自一个外部作用域,在本例中来自模块级别。

这就是为什么第一个使用模块级变量。

第二个不起作用,因为调用text()时,模块级别的变量尚不存在。