2 个回答

这个是 CPython(我们一般用的都是这个实现的 Python) 实现时做的优化,原因:在同一行(一条语句)中,CPython 会对创建 1.1 这个对象,然后第二个 1.1 会直接引用前一个对象,所以取 id 就是相同的。
可以参见 wtfpython,也有对应中文版本 wtfpython-cn。这里做了解释,也列出了许多其他的怪异表现,尤其需要注意的是,这些怪异行为在不同平台的 Python 实现和版本上的表现可能是不同的。

这种特异性,在编程中需要注意避免。

不过真正需要 用 is 来判断的地方相对比较少吧。

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