小知识点

Python中的print()中的括号可以不加,但是Python3的必须加

Python2中有xrange,Python3中只有range

Python中的raw_input在Python3中为input

=等于号是赋值;==两个等号为比较两边的值是否相等;

is为比较两边的内存地址,若内存地址相同就返回True,否则就返回False

id() 括号内输入内容即可返回对应的内存地址

小数据池:

在字符串中有一个概念叫做“小数据池”,当相同的值赋给不同的变量,在一定的范围内,他们的内存地址是相同的,而这个范围指的就是“小数据池”!这样就可以节省空间

小数据池的范围:数字范围:—5~256      

字符串的范围:1、含有特殊字符不共用同一个内存地址

       2、str X 20的范围内共用同一个内存地址,超出20用不同的内存地址(20个相同的字符串用同一个内存地址,超出则用不同的内存地址)

 

编码

字节:是种单位。8位(bit)==一个字节

字符:一个字符串或列表或字典元组等中的能看到的最小单位就是字符

ASCII码:一个字符8(bit)==1字节 表示一个字符

Unicode:一个字符32(bit)==4字节 表示一个字符

utf-8:一个英文字符8(bit)==1字节   一个中文字符24(bit)==3字节  一个欧洲文字用16位==2个字节  表示一个字符

gbk:一个英文字符8(bit)==1字节    一个中文字符16(bit)==2字节  表示一个字符

各个编码之间的二进制是不能相互识别的,会产生乱码。

文件的储存和传输不能使Unicode,因为占用资源太多。

Python3中的字符串在内存中是用Unicode编码的

bytes

还有一种数据类型叫做bytes,与字符串极为相似,但编码方式不是Unicode

对于英文:

str的表现形式为:name = “aires”  编码方式为Unicode

bytes的表现形式为:name = b“aires”   编码方式为utf- 8,gbk等除了Unicode外的任何一种。

对于中文:

str的表现形式为:name = “阿瑞斯” 编码方式为Unicode

bytes的表象形式为:name = b‘x\e56\e56\e56  (16进制) 编码方式为utf-8,gbk等除Unicode外的任何一种。

str—>bytes 转换用:encode   编码转换

name = “aires”

name1 = name.encode("utf-8")  #将name的字符串编码方式转换为utf-8,可以转换别的,例如gbk

print(name1)

相反 bytes--->str 使用:decode   解码

s = "asfgjkk"

b = s.encode('utf-8')

print(b)

#byte --->str decode 解码

s1 = b.decode('gbk')      #可用不同的编码方式进行解码(不确定)

print(s1)

 

 

posted @ 2019-01-30 16:37  Aries·zhang  阅读(99)  评论(0编辑  收藏  举报