如何从 locals() 中删除项目?

How to remove item from locals()?

我正在编写一个需要操作 locals() 的脚本,但我无法从中删除值。我试过 locals().pop(key)del locals()[key],但都不起作用。

举个例子:

def locals_test():
    a, b = 1, 2
    locals().pop('a')
    del locals()['b']
    return locals()

def dict_test():
    test = {'a':1, 'b':2}
    test.pop('a')
    del test['b']
    return test

print(locals_test()) # --> {'a':1, 'b':2}
print(dict_test())   # --> {}

我试图在 locals_test() 中复制 dict_test() 的行为,但我还没有找到解决方案。有谁知道如何解决这个问题?

locals() returns 一个字典,它是局部变量的 copy。更改副本不会删除变量。工作方式:

def locals_test():
    a, b = 1, 2
    del a
    del b
    return locals()

一般建议:像这样玩局部变量和全局变量通常是 XY 问题的症状。你最好使用值字典,这样你就不会被其他局部变量污染。