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


问题内容

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

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

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

如果我打电话,reset_ser()我得到了错误:

UnboundLocalError: local variable 'ser' referenced before assignment

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


问题答案:

只需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