如何从函数内部删除全局变量?

2024-06-17 08:54:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个全局变量ser,在某些情况下需要删除它:

global ser
ser = ['some', 'stuff']

def reset_ser():
    print('deleting serial configuration...')
    del ser

如果我调用reset_ser(),就会得到错误:

UnboundLocalError: local variable 'ser' referenced before assignment

如果将全局变量作为输入提供给函数,则不会得到错误,但不会删除该变量(我猜只在函数本身内部)。是否有删除变量的方法,或是否必须覆盖它以删除其内容?


Tags: 函数def错误serial情况someglobalconfiguration
2条回答

您可以使用以下命令将其从全局范围中删除:

del globals()['ser']

一个更完整的例子:

x = 3

def fn():
    var = 'x'
    g = globals()
    if var in g: del g[var]

print(x)
fn()
print(x) #NameError: name 'x' is not defined

只需在函数中使用global ser

ser = "foo"
def reset_ser():
    global ser
    del ser

print(ser)
reset_ser()
print(ser)

输出:

foo
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print(ser)
NameError: name 'ser' is not defined

相关问题 更多 >