zoukankan      html  css  js  c++  java
  • Python的“is”与“==”

    Python比较两个对象是否相等有两种方法,简单来说,它们的区别如下:

    1,is 是比较两个引用是否指向同一个对象(引用比较)

    2,==是比较两个对象的值是否相等。

    >>>a = [2,3,4]
    >>>b = a
    >>>b is a
    True
    >>>b = a[:] # 切片操作重新分配了对象
    >>>b is a
    False
    >>>b == a #值是相等的
    True    

    实现原理
    is 是比较两者是否同一个对象,比较的是内存地址(id是否相等)。

    ==是值比较,不可变对象,列如int,str,它会直接进行值比较。对于python已知的对象,会调用__sq__函数来比较。

    对象缓存机制

    Python会对比较小的对象缓存,下次用到时,回去缓存区查找,如果找到,不回再去开辟新的内存,而是继续把小对象的地址赋给新的值

    1 c = 1
    2 d = 1
    3 print(c is d)
    4 True
    5 
    6 1000 is 10**3
    7 False
    8 1000 == 10**3
    9 True

    通过计算得到的赋值不会使用缓存区。

  • 相关阅读:
    Oracle-函数-split 和 splitstr 的创建
    git merge方法
    查看Android 设备进程id
    内存泄漏
    Mac显示隐藏文件快捷键
    gradle版本
    commit单一文件
    21不下发信号
    FileInputStream read函数何时返回-1
    maven turbonet目录
  • 原文地址:https://www.cnblogs.com/youyuan-wang/p/6090680.html
Copyright © 2011-2022 走看看