Можно ли глобальную переменную удалить функцией?
В 1 функции обозначил переменную глобальной, в другой функции этой программы эта переменная должна удаляться, в голову пришло только это
def func():
global var
def del_func():
del var
Но это не работает, как можно решить проблему?
Ответы (2 шт):
Можно, но для этого в той функции, где вы её удаляете, вам её тоже нужно объявить глобальной. И надо эту переменную вообще создать сначала. Директива global не создаёт переменную, она только объясняет интерпретатору, где ему искать переменную с таким именем, если она вдруг встретится.
def func():
global var
var = 'test'
def del_func():
global var
del var
Ещё один вариант удаления глобальной переменной:
def func():
global var
var = 0
def del_func():
globals().pop('var')
Переменная удалится из глобальных. Но тут деструктор вызовется скорее всего после завершения del_func (надо позвать человека с дисассемблером чтоб это проверить).