zoukankan      html  css  js  c++  java
  • Python_006(is和==,小数据池)

    一.is和==的区别

    1.id()方法,可以查看一个变量的内存地址

     1 lst = ["周杰伦", "燃哥"]
     2 lst1 = ["周杰伦", "燃哥"]
     3 print(id(lst))
     4 print(id(lst1))
     5 #输出结果:2016969304136
     6          2016999144008 
     7 #可以看出地址不一致
     8 
     9 s = "燃哥"
    10 s1 = "燃哥"
    11 # 小数据池. 会对字符串进行缓存, 为了节省内存
    12 print(id(s))
    13 print(id(s1))
    14 #输出结果:2666201022288
    15          2666201022288    
    16 #地址是一致的

    总结:

      1)python中是有一个小数据池的,如果你单纯的定义一个字符串,那么一般情况下都是会被添加到小数据池中

      python会帮我们把字符串进行缓存,在下次使用的时候直接指向这个字符串即可,可以节省很多空间,

      2)小数据池也可对数字进行缓存,但也是有范围的-5~256是会被加的,超出则不加;

      3)对于字符串:a:是纯字母和下划线.那么这个对象会被添加到小数据池,中文也是特殊字符,字符串中带有中文是不会被添加的

        b:带有特殊字符的. 那么不会被添加到小数据池. 每次都是新的;例如:s1='@alxt'和s2='@alxt'地址不一样

        c:如果是单一字母*n的情况.'a'*20,在20个单位内是可以的.超过20个单位就不会添加到小数据池中

    2.== 双等表示的是判断是否相等,注意,这个双等比较的是具体的值,而不是内存地址

    3.总结:is比较的是内存地址

       ==比较的是值

    二.编码的补充

    1.在python2默认使用的是ASCII码,所以不支持中文,如果想要在python2中更改编码,需要在文件的开始编写:

    1 -*- encoding:utf-8 -*

    2.在python3中:内存中使用的是unicode码

    3.1 ASCII:最早的编码,没有中文,8个二进制位,一个字节;

    3.2 GBK:中文国标码,里面包含ASCII编码和中文常用编码,16个二进制位(bit),2个字节;

    3.3 Unicode:万国码,包含了全世界所有国家的文字的编码,32个二进制位,4个字节;

    3.4 UTF-8:可变长度的万国码,是unicode的一种实现,英文:8位,1字节; 欧洲文字:16位,2字节; 中国文字:24位,3字节;

    bytes的表现形式:英文:b"alex" 英文的表现形式和字符串没什么两样; 中文:b'xe4xb8xad一个字的utf-8表现形式; 

    1 s = "alex"
    2 bs = s.encode("GBK")
    3 cs= s.encode("utf-8")
    4 print(bs)
    5 print(cs)
    6 #输出结果:b'alex'
    7                 b'alex'    

    GBK => utf-8:

    1 bs = b'xb6xf6xc1xcbxc3xb4'
    2 # 先解码成unicode字符串
    3 s = bs.decode("GBK")
    4 print(s)
    5 # 在把字符串编码成UTF-8
    6 bss = s.encode("utf-8")
    7 print(bss)
    8 #输出结果:饿了么
    9                 b'xe9xa5xbfxe4xbax86xe4xb9x88'

     

  • 相关阅读:
    ElasticSearch查询多条件同时满足时返回所需数据
    Linux环境下安装ElasticSearch
    微博抓取照片视频
    numpy 常用方式
    Centos最小化安装 AWVS 的坑
    使用centos安装nessus 8.15,并解除IP限制
    Linux CentOS7 开通端口外网端口访问权限
    VSCode配置C语言环境
    Python MySQL
    web7
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9284852.html
Copyright © 2011-2022 走看看