Python--day06--1,Python2和Python3的区别 2,= == is id(内容) 3,小数据池 4,各种编码的区别(小知识点汇总)
1,Python2和Python3的区别
print ‘abc’ 和print (‘abc’)在Python2.7及以后的2系列中都是正确了,而Python3以后的只有print ('abc')是正确的
python2的编码是ascii码
Python3的编码是utf-8

2,= 赋值 == 比较值是否相等 is 比较,比较的是内存地址 id(内容)返回内容的id地址
通过下面截图中的代码可得通过li1给li2赋值,并没有创建新的列表。通过li1 is li2 返回true可得li1和li2指向的内存地址相同。

id(内容)返回内容的id地址

3,小数据池(判断两个变量是否是同一个地址)
数字 字符串
list dict tuple set 小数据池
小数据池:如果数字范围在-5 -- 256范围内,则各个变量的数字相同则共用一个地址。
作用:在一定程度上节省内存空间
a,数字
数字的范围 -5 -- 256

b,字符串
字符串:1,不能有特殊字符
2,s*20 还是同一个地址,s*21以后都是两个地址

c,一模一样的字符串,而且不包含特殊字符,也是同一个地址(暂时还不知道是什么原因)

d,list dict tuple set都没有数据池,只有数字和字符串有

4,各种编码的区别

1,各个编码之间的二进制,是不能互相识别的,会产生乱码
2,文件的存储,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,ascii等)
3,Python3:str: 在内存中是用unicode编码,bytes类型
传输的时候要先转换成utf-8,gbk,gb2313,ascii等
(python2中的unicode编码是两个字节,而Python3中改为四个字节)

对于英文:
str :表现形式:s = 'alex'
编码方式: 01010101 unicode
bytes:表现形式:s = b'alex'
编码方式:00010101 utf-8 gbk。。。

对于中文:
str:表现形式: s = '中国'
编码方式:01010101 unicode
bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
(这里可以看出中文是三个字节,所以是utf-8编码,
如果是四个字节则是Unicode编码,如果编码报错,
可以这样根据经验之谈判断编码方式)
编码方式:00010101 utf-8 gbk。。。
encode 编码,如何将str --> bytes
字符串必须转换成bytes类型才能存储和传输
(这篇博客前面讲了那么多就是为了引出这一句话)
s1.encode('utf-8')将字符串转换成bytes类型,还可以设置编码方式
表现形式是str转换成bytes类型,而实际上是Unicode编码转换成utf-8编码或gbk...


s1.encode('中国‘)编码,encode就是编码
将字符串转换成bytes类型。(中文形式)
由截图可以看出一个中文字符用三个字节表示就是utf-8,两个字节就是gbk
’
面试心得:面试时和面试官聊的时候要是他问你的都会,而你聊的他不知道,他就会觉得你很牛逼,太白说像Python中的小数据池可能会成为装逼神器。
问问题的说话的方式很重要,比如你实习三个月的时候,问同事问题。
如果说你说:我这个问题研究了一个下午没看出来错在哪里,那就完了,等着卷铺盖走人吧。
要这样说了,我卡在这行代码了,哥,您帮我看看是不是栈这里出问题。
如果是女生自动忽略上述。
浙公网安备 33010602011771号