• python3 id()、is 内存地址


    id()、is 内存地址

    1,id() 内存地址
    2.== 比较的是值
    3.is 比较的是内存地址
    数字,字符串,有小数据池
    int -5--256
    str:1,不能有空格
    2.长度不能超过20个字符
    3.不能有特殊字符。
    1.id() 内存地址
     1 # id() 内存地址
     2 s = 'alex'
     3 print(s,type(s),id(s))
     4 # alex <class 'str'> 35619648
     5 # alex <class 'str'> 32146240
    
    
    2.== 比较的是值
    3.is 比较的是内存地址
      3.1列表、字典、元祖
      
    1 # 列表、字典、元祖
    2 l1 = [1,2,3]
    3 l2 = [1,2,3]
    4 print(l1 == l2)  # True
    5 print(id(l1),id(l2))  # 35680008 35679368
    6 print(l1 is l2)  #False
     字符串、数字的特殊的。比较内存地址,pc看不出来,用cmd来查看s1 = 'alex  '
    3.2对于str 小数据池
    范围
    1.不能有空格。
    2.长度不能超过20位。
    3.不能有特殊字符。
    cmd ---------》str
     1 # 有空格指向的是False
     2 >>> i = 'a'
     3 >>> i1= 'a'
     4 >>> print(i is i1)
     5 True
     6 
     7 >>> s1 = 'alex '
     8 >>> s2 = 'alex '
     9 >>> print(s1 == s2)
    10 True
    11 >>> print(s1 is s2)
    12 False
    13 
    14 >>> i = 'a  b'
    15 >>> i1= 'a  b'
    16 >>> print(i is i1)
    17 False

    字符串中单个*20以内他们的内存地址一样,单个字符*20以上内存地址不一样。

    1 # 超过20位则为False
    2 >>> i = 'a'*20
    3 >>> j = 'a'*20
    4 >>> print(i is j)
    5 True
    6 >>> i = 'a'*21
    7 >>> j = 'a'*21
    8 >>> print(i is j)
    9 False

    字符串中不能包含特殊符号如:+,- @,* /

    1 # 有特殊字符也为False
    2 >>> i = 'a@'
    3 >>> j = 'a@'
    4 >>> print(i is j)
    5 False
     3.3对于int 小数据池
    范围:
      -5---256 创建的相同的数字,都指向同一个内存地址。-5/256都包含
     1 >>> i = 6
     2 >>> i1= 6
     3 >>> print(i is i1)
     4 True
     5 >>> i = 258
     6 >>> i1= 258
     7 >>> print(i is i1)
     8 False
     9 >>> i = -5
    10 >>> i1= -5
    11 >>> print(i is i1)
    12 True
    4.编码与解码
    py3:
    str: 表现形式: s = 'alex' 实际编码方式:unicode
    bytes: 表现形式: s = b'alex' 实际编码方式:utf-8,gbk,gb2312....

    unicode : 所有字符(无论英文,中文等) 1个字符=4个字节

    gbk : 一个字符,英文1个字节。中文两个字节。

    utf-8 : 英文1个字节。欧洲:2个字节。亚洲:3个字节。

    
    
        py3:
    unicode A :00000000 00000000 00000000 00001001 四个字节
    中 :00000000 00001000 00000000 00000001 四个字节

    utf-8 A :00000001 一个字节
    欧洲@ : 00000010 00000001 两个字节
    亚洲 '中' : 00001000 00000000 00000001 三个字节
    '中国':00001000 00000000 00000001 00001001 00000000 00000001

    gbk A :00001001 1个字节
    中 :00000000 00100001 两个字节
    不同的编码之间是不能相互识别,会产生乱码。

    存储,传输的:utf-8,或者 gbk,或者是gb2312,或者是其他(绝对不是unicode)。
    
    
    1 s1 = '晓晓'
    2 b11 = s1.encode('utf-8')
    3 print(b11)  # b'xe6x99x93xe6xa2x85' 6个字节
    4 s2 = '晓晓'
    5 b22 = s2.encode('gbk')
    6 print(b22)  # b'xcfxfexc3xb7' 4个字节
    
    
    
     
     
     
     
  • 相关阅读:
    【Spring源码这样读】-再次走近容器Spring IOC 一
    【Spring源码这样读】-下载安装一份Spring源码
    【Spring源码这样读】-认识Spring的基本功能
    【Spring源码这样读】-怎么阅读源码
    RabbitMQ没有延时队列?学会这一招玩转延时队列
    【HDU 3746 Cyclic Nacklace】
    10要点解决IE6兼容性问题
    《遍地风流》- 阿城
    PyCharm2021使用教程 --- 1、PyCharm的下载与安装
    爬虫系列 | 6、详解爬虫中BeautifulSoup4的用法
  • 原文地址:https://www.cnblogs.com/chenxi67/p/9407310.html
Copyright © 2020-2023  润新知