• is和 =


    一般新建一个对象,内存地址是不相同的,下面的是例外。

    字符串有小地址池的要求:不能有空格、没有特殊字符和字符长度小于等于20.

    数字-5到256

    a is b:a和b的内存地址相等

    a == b :a和b的值相等

    a = b =1,:是1的两个标签

    a = 1和b = 1理论上说对象是不一样的。

    >>> a =1
    >>> b =1
    >>> c = 2
    >>> a == b     #值相等
    True
    >>> a == c
    False
    >>> a is b     #a和b指向的是一个值,内存地址相同
    True
    >>> a is c
    False
    >>> e = 365   #但是有例外
    >>> f = 365
    >>> e is f
    False
    >>> e == f
    True

    先要在重新声明的是:字符串、数字都是属于非容器,因此不存在拷贝一说。

    按理说,365和1都是属于类原子类型,都是不能在更改,为啥会有完全不同的结果了?

    这是因为对于数字来说,有一个小数据池,创建相同的数字对象,都会指向一个相同的数据池,范围在-5~~255之间,这样做也是为了节省内存。

    >>> e = 365
    >>> f = 365
    >>> e is f
    False
    >>> e == f  #值虽然相等
    True
    
    >>> id(e)   #内存地址并不相同
    139928493356080
    >>> id(f)
    139928493355696

    相对于数字来说,没有空格的字符串也有小数据池。

    >>> oo = 'wo shi'
    >>> op = 'wo shi'
    >>> id(oo)
    139928493584544
    >>> id(op)
    139928493584656
    
    >>> a = 'wqrqw'  #有地址池,长度在20以内都是共享内存的
    >>> b = 'wqrqw'
    >>> id(a)
    139928493545768
    >>> id(b)
    139928493545768
    >>> skt = 'k'*20      
    >>> kt = 'k'*20
    >>> id(skt)
    139717594629728   #长度20的时候内存地址是一样的
    >>> id(kt)
    139717594629728
    
    
    >>> edg = 'j'*21
    >>> ede = 'j'*21
    >>> id(edg)             #大于20的时候内存地址是不一样的
    139717594629800
    >>> id(ede)
    139717594629872
  • 相关阅读:
    Door man
    Borg Maze
    Agri-Net
    Highways
    Truck History
    Arctic Network
    QS Network
    用贝塞尔曲线实现水波效果
    在一个Label上设置多种颜色字体
    用UIImageView作出动画效果
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/7738966.html
Copyright © 2020-2023  润新知