day06 --编码及知识点补充

一,is和==的区别

  1,id :通过id我们可以查看到一个变量表示的值在内存中的地址

    用id()表示,括号里面放的是想要查看地址的变量

    字符串的数据地址是一样的,列表的数据地址是不一样的

s = "alex"
print(id(s))   #4434277576
s = "alex"
print(id(s))  #4434277576

lst = [1,2,3]
print(id(lst))  #4520564552
lst1 = [1,2,3]
print(id(lst1))  #4520565512

在python中,命令行代码和py文件中的代码运行的效果可能是不一样的

小数据池(常量池):把我们使用过的值存储在小数据池中,使其他的变量使用

        小数据池给数字和字符串使用,其他数据类型不存在

     对于数字:-5~256是会被加到小数据池中的,每次使用都是同一个对象

       对于字符串:

        1,如果是纯文字信息和下划线,那么这个对象会被添加到小数据池

        2,如果带有特殊字符的话,不会被添加到小数据池,每次都是全新的

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

       *** (一般情况下,在py文件中,如果只是单纯的定义一个字符串,一般情况下会被添加到小数据池中的,我们可以这样认为:在使用字符串的时候,python会帮我们把字符串进行缓存,在下次使用的时候直接指向这个字符串即可,可以节省很多内存)    这个问题官方也没有给出一个完美的结论和定论,所以不要太纠结

     总结:  is比较的是地址

              ==比较的是值

二,编码的补充:

    1,在python2中,默认使用的事ASCII码,不支持中文,所以在python2中编写中文的时候要在开头写入: #-*- encoding:utf-8 -*-

  2,在python3中,内存使用的事Unicode码

bytes的表现形式:
1. ⽂文 b'alex' ⽂文的表现形式和字符串串没什什么

2. 中⽂文 b'\xe4\xb8\xad' 这是⼀一个字的UTF-8bytes表现形式

     字符串在传输时转化成bytes==> encode(字符集)来完成

: ⽂文编码后的结果和字符串串⼀一. 中⽂文编码后的结果根据编码的不同. 编码结果 也不同. 我们能看到. ⼀一个中⽂文的UTF-8编码是3个字节. ⼀一个GBK的中⽂文编码是2个字节.

猜你喜欢

转载自www.cnblogs.com/lianghui-lianghui/p/9161590.html