day06 --编码及知识点补充
Posted lianghui-lianghui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘xe4xb8xad‘ 这是?一个汉字的UTF-8的bytes表现形式
字符串在传输时转化成bytes==> encode(字符集)来完成
记住: 英?文编码之后的结果和源字符串串?一致. 中?文编码之后的结果根据编码的不同. 编码结果 也不同. 我们能看到. ?一个中?文的UTF-8编码是3个字节. ?一个GBK的中?文编码是2个字节.
以上是关于day06 --编码及知识点补充的主要内容,如果未能解决你的问题,请参考以下文章