is和==两种运算符在应用上的本质区别

  1. Python中对象的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
  2. is和==都是对对象进行比较判断作用的,并返回True|False,但对对象比较判断的内容并不相同。
  3. ==用来比较判断两个对象的value(值)是否相等,(type和value)
    is也被叫做同一性运算符, 会判断id是否相同,(id, type 和value)

示例1
010_Python知识点_is|== & copy(浅拷贝)|deepcopy(深拷贝)
特例:下图中小整数对象池是Python中的共享机制,为避免频繁申请和销毁内存空间做出的优化设计,范围 [-5, 257)这些整数对象是提前创建好的,且所有位于这个范围内的整数使用的均为同一个对象,不会被垃圾回收
010_Python知识点_is|== & copy(浅拷贝)|deepcopy(深拷贝)

深拷贝和浅拷贝的区别?/python中如何拷贝一个对象

赋值指创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。(=)

  1. 浅拷贝: 对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。(li.copy(), copy.copy())

    公用一个值;
    这两个变量的内存地址一样;
    对其中一个变量的值改变,另外一个变量的值也会改变;

  2. 深拷贝: 一个变量对另外一个变量的值拷贝,递归拷贝。(copy.deepcopy())

    两个变量的内存地址不同;
    两个变量各有自己的值,且互不影响;
    对其任意一个变量的值的改变不会影响另外一个;

示例1
010_Python知识点_is|== & copy(浅拷贝)|deepcopy(深拷贝)
示例2:嵌套列表
010_Python知识点_is|== & copy(浅拷贝)|deepcopy(深拷贝)

相关文章: