python2&python3
1.python2中print可加括号可不加括号,python3中print一定要加括号。
2.python2中有range(),也有xrange(),python中只有range()。生成器。
3.Python2中raw_input(),python3中input()。
=,==,is
=赋值
==比较是否相等
is 比较内存地址,id(内容)
li1=[1,2,3] li2=li1 print(id(li1),id(li2)) #2131068415112 2131068415112 #一般赋值运算内存地址是一样的
i1=6
i2=6
print(id(i1),id(i2))#1632326608 1632326608地址一样
i1=300
i2=300
print(id(i1),id(i2))#2749778251664 2749783362800地址不一样(cmd里运算)
#数字,字符串的小数据池
数字范围-5,-256
字符串:1.不能有特殊字符
2.s*20同一个地址,s*21以上两个地址
编码方式:
ascii: A:00000010 8位 一个字节
unicode: A:00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 000001100 32位 四个字节
utf-8: A: 01000000 8位 一个字节
中:00001000 00000001 00000010 24位 三个字节
gbk: A: 00001000 8位 一个字节
中:00000010 00000001 16位 两个字节
1.各个编码之间的二进制是不能互相识别的,会产生乱码。
2.文件的储存和传输不能是Unicode,只能是utf-8,jbk,gb2312,ascii等
python3中:
str在内存中是用Unicode编码.(所以在文件储存和传输时要转化)先转化为bytes进行存储和传输。
bytes类型(数据类型的一种,跟str很像,只是编码方式不同,它用utf-8,gbk,gb2312编码)
对于英文:
str:表现形式:s="bree"
编码方式:00000010 Unicode
bytes:表现形式:s=b"bree"
编码方式:00000010 utf-8,gbk...
对于中文:
str:表现形式:s="中国e"
编码方式:00000010 Unicode
bytes:表现形式:s=b"xe91e91e01e11e31e22" (三个字节对应一个中文则用的是utf-8,若两个字节对应一个中文则用的是jbk)
编码方式:00000010 utf-8,gbk...
s="中国" print(s,type(s)) #中国 <class 'str'> s1=b"中国" print(s1,type(s1)) #报错 #encode 编码,如何将表现形式str 转化成bytes,将编码方式Unicode转化位utf-8或gbk s1="bree" s11=s1.encode("utf-8") print(s11) #b'bree' s2="中国" s22=s2.encode("utf-8") print(s22) #b'xe4xb8xadxe5x9bxbd' #三个字节表示一个中文 s3="中国" s33=s3.encode("gbk") print(s33) #b'xd6xd0xb9xfa' #两个字节表示一个中文