You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用is运算符比较浮点数为何返回False?

为什么Python中用is比较浮点数会返回False?
  • is和==的本质区别

    • is用来判断两个变量是否指向内存中的同一个对象,比的是身份(内存地址)
    • ==用来判断两个对象的值是否相等,比的是内容
      比如运行这段代码:
    num1 = 0.5
    num2 = 0.5
    print(num1 == num2)  # 输出 True
    print(num1 is num2)  # 输出 False
    
  • Python的对象缓存规则
    Python会对小范围整数(通常是-5到256)做缓存,重复使用同一块内存的对象,所以用is比较这些整数会返回True,但浮点数不享受这种缓存待遇。每次定义一个浮点数,Python都会在内存里新建一个对象,哪怕值和之前的一样,内存地址也不同,is比较自然返回False。

  • 特殊情况:同一对象的引用
    如果两个变量指向的是同一个浮点数对象,is会返回True:

    num1 = 0.5
    num2 = num1
    print(num1 is num2)  # 输出 True
    

    这里num2只是num1的引用,两者指向同一块内存,所以身份判断为真。

内容的提问来源于stack exchange,提问作者Tanjila 486 013

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:20:37