垃圾回收None - del 差异

Garbage collection None - del difference

python中的a = Nonedel a在逻辑上有区别吗?

None关键字用于定义空变量或对象。在python中,None关键字是一个对象,它是classNone类型的数据类型。

del 关键字用于删除对象。

如果我使用手动垃圾收集,它们是否相同?

不,None仍然是一个对象(类型NoneType),它占用内存并且可以被引用,而del从名称space中删除对象的名称.

比如说,您在全局范围内创建了一个变量 a = None。它将存在于 globals()。现在,如果您使用 del a 删除它,对 a 的引用将不复存在。

轻松展现自己的不同之处:

a = 5
a = None
print(a == 5)  
# False

del a
print(a == 5)
# Traceback (most recent call last):
#  File "<input>", line 1, in <module>
# NameError: name 'a' is not defined

换句话说,a = None 仍然在您的会话中保留名称 adel a 相比之下完全杀死了名称,如果您尝试引用它,您将得到一个 NameError