Python中的a = None
和del a
之间是否存在逻辑差异?
None关键字用于定义空变量或对象。在python中,None关键字是一个对象,它是NoneType类的数据类型。
del关键字用于删除对象。
如果我使用手动垃圾收集,这些内容是否相同?
Python中的a = None
和del a
之间是否存在逻辑差异?
None关键字用于定义空变量或对象。在python中,None关键字是一个对象,它是NoneType类的数据类型。
del关键字用于删除对象。
如果我使用手动垃圾收集,这些内容是否相同?
否,None
仍然是一个占用内存并可以引用的对象(类型为NoneType
),而del
则从名称空间中删除了该对象的名称。
说,您在全局范围内创建了一个变量a = None
。它将存在于globals()
中。现在,如果要使用del a
删除它,则对a
的引用将不复存在。
易于证明自己的不同之处:
proc_model <- function(p1,p2) {
fit <- model(data,p1,p2)
return(model_score(fit))
}
param_pairs <- expand.grid(para1 = 1:10,para2 = 1:10)
# VECTOR/MATRIX OUTPUT
assessment <- mapply(proc_model,param_pairs$para1,param_pairs$para2)
# LIST OUTPUT
assessment <- Map(proc_model,param_pairs$para2)
换句话说,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
。与此相反,a
会完全杀死该名称,如果您尝试引用它,则会得到一个del a
。