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'

     

  • 相关阅读:
    POJ3159 Candies —— 差分约束 spfa
    POJ1511 Invitation Cards —— 最短路spfa
    POJ1860 Currency Exchange —— spfa求正环
    POJ3259 Wormholes —— spfa求负环
    POJ3660 Cow Contest —— Floyd 传递闭包
    POJ3268 Silver Cow Party —— 最短路
    POJ1797 Heavy Transportation —— 最短路变形
    POJ2253 Frogger —— 最短路变形
    POJ1759 Garland —— 二分
    POJ3685 Matrix —— 二分
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9284852.html
Copyright © 2011-2022 走看看