【问题标题】:How to use shadowing with global variables?如何对全局变量使用阴影?
【发布时间】:2014-11-15 22:46:49
【问题描述】:

我有课堂笔记,但我不确定实际发生了什么。 除了增加混乱之外,阴影还允许做什么?我认为因为 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 列表是可变的,与字符串相比,此示例如何改变等式?并且澄清一下,这些值中的任何一个都是实际的全球性的吗?

谢谢。

【问题讨论】:

    标签: python shadowing


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-28
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多