如果小于-6

时间:2019-05-10 10:06:03

标签: python jupyter-notebook

我在检查变量分配的id时遇到了奇怪的行为。我已经运行了以下代码

a = -5
print(id(a))

并获得了ID如下

140710231913104

如果执行id,多次执行Jupyter单元时,我会得到相同的a >= -5;而如果我分配并运行a < -5,则每次执行完{ Jupyter细胞。在下图中找到摘要

enter image description here

此行为可能是什么原因?

2 个答案:

答案 0 :(得分:4)

看看下面的例子:

>>> a=256
>>> b=256
>>> print(id(a),id(b))
(31765012, 31765012)
>>> 
>>> c=257
>>> d=257
>>> print(id(c),id(d))
(44492764, 44471284)
>>> 

这将帮助您了解整数的意外行为。每当您在-5到256范围内创建一个Int时,实际上您实际上只是返回对现有对象的引用。这在python中称为Integer Caching。

答案 1 :(得分:-1)

来自failCallback

  

id(obj,/)   返回对象的标识。
  这可以保证在同时存在的对象中是唯一的。   (CPython使用对象的内存地址。)

对于较小的数字(不确定确切的数字),python在内存中仅保留每个数字的一​​个“版本”。这就是为什么每次分配$("#file_download").click(function() { $.fileDownload($(this).prop('type'), { preparingMessageHtml: "The file download will begin shortly, please wait...", failMessageHtml: "There was a problem generating your report, please try again.", successCallback: function() { window.location.reload(true) } }); return false; //this is critical to stop the click event which will trigger a normal file download! }); 时都会得到相同的存储位置的原因。分配help(id)时,地址会更改。如果尝试更大的数字,则每次都会得到不同的结果。示例:

-5