python2 与 python3 的区别
1. print、input、生成器
- #python2print() print 'abc'range() xrange() 生成器
- raw_input()#python3print('abc')
- range()
- input()
2.知识点小节
= 赋值
== 比较值是否相等
is 比较,比较的是内存地址
id(内容)
- li1 = [1,2,3]
- li2 = li1
- li3 = li2print(id(li1),id(li2))
数字,字符串 小数据池
数字的范围 -5 -- 256
字符串:
1,不能有特殊字符
2,s*20 还是同一个地址,s*21以后都是两个地址
- i1 = 6i2 = 6print(id(i1),id(i2))
- i1 = 300i2 = 300print(id(i1),id(i2))
list、dict、uple、set
- l1 = [1,]
- l2 = [1,]print(l1 is l2)
-
- s = 'alex's1 = b'alex'print(s,type(s))print(s1,type(s1))
-
- s = '中国'print(s,type(s))
- s1 = b'中国'print(s1,type(s1))
编码
- s1 = 'alex'# encode 编码,如何将str --> bytes, ()s11 = s1.encode('utf-8')
- s11 = s1.encode('gbk')print(s11)
- s2 = '中国's22 = s2.encode('utf-8')
- s22 = s2.encode('gbk')print(s22)
- ascii
- A : 00000010 8位 一个字节
-
- unicode A : 00000000 00000001 00000010 00000100 32位 四个字节
- 中:00000000 00000001 00000010 00000110 32位 四个字节
-
-
- utf-8 A : 00100000 8位 一个字节
- 中 : 00000001 00000010 00000110 24位 三个字节
-
-
- gbk A : 00000110 8位 一个字节
- 中 : 00000010 00000110 16位 两个字节1,各个编码之间的二进制,是不能互相识别的,会产生乱码。2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等)
-
- py3:
- str 在内存中是用unicode编码。
- bytes类型
- 对于英文:
- str :表现形式:s = 'alex'编码方式: 010101010 unicode
- bytes :表现形式:s = b'alex'编码方式: 000101010 utf-8 gbk。。。。
-
- 对于中文:
- str :表现形式:s = '中国'编码方式: 010101010 unicode
- bytes :表现形式:s = b'x\e91\e91\e01\e21\e31\e32'编码方式: 000101010 utf-8 gbk。。。。