如何从 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 问题的症状。你最好使用值字典,这样你就不会被其他局部变量污染。
我正在编写一个需要操作 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 问题的症状。你最好使用值字典,这样你就不会被其他局部变量污染。