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'

     

  • 相关阅读:
    后缀零
    vs2019 MFC的安装 解决 此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。
    矩形切割
    fsync: failed to connect to feed.openvas.org (89.146.224.58)
    How to Install GVM Trial With VMware Workstation Player/Pro
    GVM 21.04 (stable, initial release 20210416)
    gitlab 升级相关
    Adobe Reader XI 11.0.23 简体中文版
    gofileserver GO HTTP 文件下载服务器
    KVM 中安装 Windows 10 虚拟机、CentOS 8 虚拟机及快照操作
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9284852.html
Copyright © 2011-2022 走看看