有没有办法在python中清除变量的值?Python中的清晰变量
例如,如果我正在实施一个二叉树:
Class Node:
self.left = somenode1
self.right = somenode2
如果我想删除一些树的节点,我需要设置self.left
空。
有没有办法在python中清除变量的值?Python中的清晰变量
例如,如果我正在实施一个二叉树:
Class Node:
self.left = somenode1
self.right = somenode2
如果我想删除一些树的节点,我需要设置self.left
空。
self.left = None
怎么了?我误解了你的问题,还是对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
编辑:但在这种情况下,我投票给self.left = None
有时这并不能完全移除它,这只会删除对内存的引用。这可能会在内存中留下无法获取gc的幻影变量。 –
'del'也有缺点,如果你试图删除一个不存在的变量,它会抛出一个异常,这通常是不受欢迎的。 –
我只是想指出,如果您意外键入'type(...)'时意外地声明了一个覆盖内置命令的变量,例如'type = ...',那么删除它是取回原始文件的最简单方法功能。也就是说,如果你把它保持为None,你仍然会切断对底层函数的访问。 – mpacer
你可以试试这个:
self.left = None
self.left = None
应该做的工作。
var = None
“清除值”,将变量的值设置为“无”,如“无”的值,但指向变量的指针保持不变。
del var
完全删除变量的定义。
如果您想在以后使用该变量,例如为它设置一个新值,即保留该变量,None
会更好。
其实,这并不会删除变量/属性。它所要做的就是将其值设置为None
,因此该变量仍占用内存中的空间。如果要从内存中完全擦除变量的所有存在,只需键入:
del self.left
我不明白为什么=无答案是如此受欢迎。这是正确的答案 –
OP说'清除'不是'删除'。 del会杀死属性和查找。将它设置为None的方法比清除方式更清晰,你可以检查'self.left'是否足够检查节点是否为空。 – user1767754
不熟悉None关键字。这与其他语言中的null类似吗? – Bnicholas
是的;它相当于null。 – Smashery
是的,'None'就像'null','nil'及其所有的“同义词”。 – juliomalegria