python - 将变量设置为无或删除变量之间有区别吗?

标签 python python-2.7

<分区>

如果通过设置清除变量,性能或内存是否有明显差异

x = 'something'
x = None

相对于

x = 'something'
del x

对于许多变量?

最佳答案

两次 'something' 的内存都将被回收如果 x 是对该字符串对象的最后引用。在第一个示例中,您使用了稍微多一点的内存,因为您保留了名称 x

我做了一些搜索,看起来内存会立即被回收:further reading .

但是,在概念上存在差异,您的程序的行为会有所不同。当您del x 时,您取消绑定(bind) 名称x,并且尝试使用该名称将引发NameError:

>>> x = 'something'
>>> del x
>>> x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined

当您设置x = None 时,您重新绑定(bind) x 成为对象None 的名称,并且仍然可以按预期使用变量。例如真实/虚假测试:

>>> x = None
>>> if not x:
...     print('hello cshin9!')
... 
hello cshin9!

关于python - 将变量设置为无或删除变量之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36087458/

相关文章:

python - 将额外的参数传递给Django Rest Framework中的嵌套Serializer

python - 如何计算 2 个数字的比率并返回大约 1000 个数字的等效列表?

python - 使用map和lambda来模拟字典理解

python - 如何在 Python 中使用 panda 跳过读取空文件

python - 不同行的正则表达式 - python

python - 如何在 Odoo 中从产品模板属性行创建产品变体?

python - 打开 Firefox 时出现问题

mongodb - 全文检索 MongoDB/Mongoengine

python - 属性错误 : Menu instance has no attribute '__len__'

python - 消除 fft 图表中的噪音