python5

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"x\e91\e91\e01\e11\e31\e22" (三个字节对应一个中文则用的是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'\xe4\xb8\xad\xe5\x9b\xbd'  #三个字节表示一个中文

s3="中国"
s33=s3.encode("gbk")
print(s33)   #b'\xd6\xd0\xb9\xfa'  #两个字节表示一个中文

 

posted @ 2018-10-11 18:42  Bree-No1  阅读(344)  评论(0编辑  收藏  举报