【问题标题】:How to update dictionary values present within local symbol table?如何更新本地符号表中存在的字典值?
【发布时间】:2021-12-29 04:16:58
【问题描述】:

我编写了以下程序,其中我试图修改local symbol table 中的dictionary values

def modify_locals():
    str = True
    print(locals())
    locals()['str'] = False
    print(locals())

modify_locals()

输出:

{'str': True}
{'str': True}

请告诉我为什么locals()['str'] = False 不更新local symbol table

【问题讨论】:

标签: python python-3.x function scope local-variables


【解决方案1】:

globals() 返回对包含全局命名空间的字典的实际引用。

另一方面,locals() 返回一个字典,它是本地命名空间的当前副本,而不是对其的引用。所以你不能使用locals()的返回值来修改实际本地命名空间中的对象。

这在这篇文章中有完整的解释:https://realpython.com/python-namespaces-scope/#the-locals-function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2022-07-24
    • 2014-03-22
    相关资源
    最近更新 更多