【问题标题】:Difference in handling of tuples in python shell vs IDLEpython shell与IDLE中元组处理的区别
【发布时间】:2021-03-10 05:19:56
【问题描述】:

当我遇到奇怪的不一致时,我正在学习 python 元组。这段代码:

x = (1,2)
y = (1,2)
print(x is y)

这在 shell 中给出了 False,但在 IDLE 中给出了 True。有什么原因吗?

【问题讨论】:

  • 他们都使用相同版本的 Python 吗?
  • 不错的菲茨。我可以确认我看到了相同的差异。蟒蛇 3.8。奇怪
  • Python没有承诺关于两个相等(深度)不可变值是否将由同一个对象表示。某些情况得到优化。有些没有。此类优化不是语言定义的一部分,不应依赖。
  • 试试 ==。还会发生吗?
  • @Epsi95 是一种特殊的 CPython 优化,可以缓存小的 int 对象

标签: python python-3.x memory-management tuples


【解决方案1】:

实际上 Python IDLE 和 shell 对 tuple-() 等数据类型使用不同的存储系统 所有其他数据类型,例如:

  • 列表
  • 设置
  • 字典

将显示相同。

【讨论】:

  • @Kral is== 不同。
  • "实际上 Python IDLE 和 shell 对元组等数据类型使用不同的存储系统" 不,这绝对不是真的。
  • 好吧,为什么请告诉
  • 有很多可能的原因,idle 可能是执行整个块,其中窥孔优化器将不可变的文字优化为同一个对象,而在 shell 中,块是分开的,所以优化不会发生。 Python IDLE 中没有针对特定数据类型的“不同存储系统”,这没有任何意义,IDLE 只是一个 IDE,它不是一个单独的运行时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
相关资源
最近更新 更多