Answers:
这有什么错self.left = None?
null在PHP中不同的是null,在大多数情况下,在PHP中将变量设置为会给您类似的行为,就像您一开始没有定义它一样。NonePython中的值与未定义的变量完全不同。None与的其他大部分版本非常相似null(至少直到我们深入了解更多神秘的细节为止)。
None,也可以使用其他任何未指定类型的“普通”对象做任何事情:将其存储在容器中,打印它的字符串表示形式,检查其中的一些元数据...无论如何,您是否尝试过Google的“ python null”当量”?我是认真的; 需要进行一些分析,但是信息就在那里。
print x,然后按Enter。像大多数语言一样,当您尝试打印未定义的变量时,这将产生解释器错误。但是,如果您定义了变量,然后尝试使用None将其清除,则使用print x代码将产生该单词None作为输出。我是python的新手,所以我可能会误会,但这似乎不像是已清除变量的行为。
该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
del还有一个缺点是,如果您尝试删除不存在的变量,则会引发异常,这通常是不可取的。
type=… 当您打算键入type(…)然后删除时,这是找回原始功能的最简单方法。也就是说,如果将其保留为None,则仍将切断对基础功能的访问。
set = set(myList)然后意识到我不能再将set用作函数(doh)。使用del set允许我再次将其用作FX。当然,我永远不会在实际脚本中使用该保留的var。
var = None “清除值”,将变量的值设置为“ null”,就像“ None”的值一样,但是指向变量的指针仍然保留。
del var 完全删除变量的定义。
如果您以后想使用该变量,例如为其设置一个新值,即保留该变量,None会更好。
实际上,这不会删除变量/属性。它所要做的只是将其值设置为None,因此该变量仍会占用内存空间。如果要从内存中完全清除变量的所有存在,可以键入:
del self.left
clear说不remove。del将杀死该属性和查找。将其设置为None是一种更清洁的方法,它比您可以检查的if self.left要好,这足以检查节点是否为空。
del,恕我直言,那么很明显,在“心理分析”时可以忘记该变量。 ' 代码。
if self.left:还是希望处理一个可能的NameError异常,如果您未在任何地方处理该错误,它将导致程序崩溃?
是否要删除变量,不是吗?
好的,我想我有一个@bnul答案的最佳替代主意:
您可以使用以下方法删除个人名称del:
del x
或者您可以将它们从globals()对象中删除:
for name in dir():
if not name.startswith('_'):
del globals()[name]
这只是一个示例循环;它仅在防御性上删除不以下划线开头的名称,并假设(不是毫无道理的)假设您在解释器的开头仅使用了没有下划线的名称。如果您确实想透彻一点,则可以使用硬编码的名称列表来保留(白名单)。除了退出并重新启动解释器外,没有内置函数可以为您执行清除操作。
您导入的模块(import os)将保持导入状态,因为它们被sys.modules引用。后续导入将重用已经导入的模块对象。您只是在当前的全局名称空间中没有对它们的引用。
请重新考虑这个答案!
我使用了上面提到的一些选项:
del self.left
或使用以下方式将值设置为“无”
self.left = None
当您将值设置为None时,了解差异并放置一些异常处理程序很重要。如果您要使用模板打印条件语句的值,请说,
print("The value of the variable is {}".format(self.left))
您可能会看到变量的值显示为“变量的值为None”。因此,您必须在其中放置一些异常处理程序:
if self.left:
#Then only print stuff
如果self.left不是 None