python - 元组拆包与正常赋值有何不同?

标签 python python-2.7 cpython

来自 this link我了解到

The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object

但是当我尝试为我的 session 提供一些示例时,我发现它在赋值和元组解包方面的行为不同。

这是片段:

>>> a,b = 300,300
>>> a is b
True
>>> c = 300
>>> d = 300
>>> c is d
False

最佳答案

因为 int 是不可变的,Python 可能使用也可能不使用 exists 对象,如果将以下代码保存到脚本文件中并运行它,它将输出两个 True。

a, b = 300, 300
print a is b

c = 300
d = 300
print c is d

Python 编译代码时,可能会重用所有的常量。因为你在 python session 中输入代码,代码是逐行编译的,Python 不能将所有常量作为一个对象重用。

文档只说-5到256只有一个实例,并没有定义其他的行为。对于不可变类型,不是并不重要,因为您无法修改它们。

关于python - 元组拆包与正常赋值有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20729366/

相关文章:

cuda - cuda 的向量化,一个以复数作为输入,一个复数作为输出的函数在 numba 中失败

python - cPython 是否使用多个内核来实现排序、任意、全部等内置函数?

javascript - Django 如何将点击的链接文本传递到另一个显示静态图像的 HTML 页面上的 URL?

python - 如何保存字符串的顺序?(Python 3.)

python - 使用 Spyder 和 Python(x,y) 运行脚本时出错?

python - python中变量值的变量

python-2.7 - 需要在NLTK和Python中设置分类语料阅读器,语料文本一个文件,一行一个文本

python - 使用 df.barplot 时 python 条形图中的颜色

python - 删除被遮挡的散点图点

python - 除了 CPython 之外,生产就绪的 Python 实现?