Ответ 1
Что не так с self.left = None
?
Есть ли способ очистить значение переменной в python?
Например, если я выполнял двоичное дерево:
Class Node:
self.left = somenode1
self.right = somenode2
Если бы я хотел удалить из дерева node, мне нужно было бы установить self.left
в пустую.
Что не так с self.left = None
?
Это ключевое слово del
.
>>> a=1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
EDITED: Но в этом случае я голосую за self.left = None
var = None
"очищает значение", устанавливая значение переменной "null" как значение "None", однако указатель на переменную остается.
del var
полностью удаляет определение для переменной.
Если вы хотите использовать эту переменную позже, например. установите для него новое значение, т.е. сохраните переменную, None
будет лучше.
Собственно, это не удаляет переменную/свойство. Все, что он сделает, это установить значение None
, поэтому переменная по-прежнему будет занимать место в памяти. Если вы хотите полностью стереть все существование переменной из памяти, вы можете просто ввести:
del self.left
Если хотите полностью удалить его, используйте del
:
del your_variable
Или иначе, чтобы очистить его содержимое:
your_variable = None
Если это список или кортеж, вы можете сделать его пустым, например:
your_variable.clear()
Тогда your_variable
будет пустым
Вы можете попробовать следующее:
self.left = None
self.left = None
должен выполнить задание.
Что делать, если я хочу полностью удалить переменную, которая в некоторых случаях не существует. Есть ли параметр, чтобы избежать ошибки? Мне нужно удалить несколько переменных:
del a, b, c, d
Я мог бы использовать цикл и попробовать/исключать, но я предпочитаю некоторые переключатели, чтобы избежать этого.
Я использовал несколько вариантов, упомянутых выше:
del self.left
или установите значение None с помощью
self.left = None
Важно знать различия и использовать несколько обработчиков исключений, когда вы используете значение None. Если вы печатаете значение условных операторов с помощью шаблона, скажем,
print("The value of the variable is {}".format(self.left))
вы можете увидеть значение переменной печати "Значение переменной - Нет". Таким образом, вам придется разместить там несколько обработчиков исключений:
if self.left:
#Then only print stuff
Приведенная выше команда будет печатать значения, только если self.left не является None
Функция удаления в python физически не удалит переменную, и вы не освободите пространство памяти, таким образом, = None - правильный путь к ней.