Python解释器里的is和Pycharm里的is有什么区别?

题目描述

一段相同的代码,在Python解释器里和Pycharm里面的运行结果不一样

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

a = "aaa aaa"
b = "aaa aaa"
print(a is b)

在Python解释器里执行的结果是Falses
但是我在Pycharm里面的执行结果是True,想问下这是为什么?
图片描述
这是在Pycharm里面的执行结果

图片描述
这是在Python解释器里面的执行结果

阅读 3k
2 个回答

跟pycharm无关,运行方式不同造成的
在python shell中也可以为True

>>> a, b = "aaa aaa", "aaa aaa"
>>> a is b
True

在终端使用python lx.py命令运行也是True
这是Cpython在compile time时做的优化。

比较值使用 == 比较内存地址使用 is 比较类型 使用 isinstance

一般来说 字符串这种数据不可变的数据... 也就是一般情况下 指向不同的内存地址, 如果为True, 可能就是楼上说的 解释器做的优化, 建议尽量避免这种操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题