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

时间:2019-01-01 22:59:28

标签: python dictionary local-variables

我正在处理一个需要对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())   # --> {}

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

1 个答案:

答案 0 :(得分:2)

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

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

一般建议:像这样与本地人和全球人玩耍通常是XY问题的征兆。最好使用值字典,这样就不会受到其余局部变量的污染。