0

我有课堂笔记,但我不确定实际发生了什么。除了增加混乱之外,阴影还允许做什么?我认为因为 globalString 是一个字符串类型,它不能被修改?如何访问原始值?什么是记忆中的一个实例?

globalList = [1,2,3]
globalString = "global"     # can't be modified because it's a string

def updateGlobalString():
    global globalString     # Does line this do anything?
    globalString = "new"

print(globalString)
>>> "global"
updateGlobalString()
>>> "new"

def updateGlobalList():
    globalList.append(4)

print(globalList)
>>> [1,2,3]
updateGlobalList()
print(globalList)
>>> [1,2,3,4]

如果 python 列表是可变的,那么与字符串相比,这个例子如何改变等式?只是澄清一下,这些值中的任何一个都是实际的全球性的吗?

谢谢你。

4

2 回答 2

2

阴影不是一种技术或工具,它只是 Python 范围规则的结果。

我对您关于是否有任何变量是全局变量的问题感到困惑。在模块级别声明的任何内容都是全局的。关键字,当global在非全局范围内使用时,允许您将名称重新绑定到不同的对象,并使重新绑定也在全局范围内生效:否则您只需在本地范围内定义一个新变量(这将确实会影响原始变量)。

于 2014-11-15T23:00:52.550 回答
1

全局意味着变量将出现在全局空间中。所以一个函数删除全局命名空间中的旧字符串并用新字符串替换它。但是,列表是可变的,并且直接结果可以在全局范围之外更改。

于 2014-11-15T22:56:53.533 回答