zoukankan      html  css  js  c++  java
  • python中的is和==

    is和==
    Python中的对象包含三要素:id、type、value
    id方法的返回值就是对象的内存地址
    其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
    is 判断的是a对象是否就是b对象,是通过id来判断的
    == 判断的是a对象的值是否和b对象的值相等,是通过value来判断的

    但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,

    如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:

    >>> a=2
    >>> b=2
    >>> a is b
    True
    
    
    如果赋值的不是2而是大的数值,情况就跟前面的一样了:
    
    >>> a=5555
    >>> b=5555
    >>> a is b
    False
    >>> id(a)
    12464372
    >>> id(b)
    12464396
    

     

    下面又是什么原因呢

    1、是py模块文件,在同一个模块内,相同的常量对象只分配一个存储单元
    2、是python解释器,这个才有-5~257 的小数优化

     

     

  • 相关阅读:
    ant design pro梳理
    JSON.stringify()
    数组小细节
    js this细节
    策略模式解决if-else过多
    使用useState的赋值函数异步更新问题
    Hook
    React Api
    Intent
    树的非递归遍历
  • 原文地址:https://www.cnblogs.com/nmap/p/9316067.html
Copyright © 2011-2022 走看看