python2与python3的区别

一:python2python3的区别

Python2 默认ASCII码                     python3默认UTF-8

Python2print得括号可加可不加                    python3必须加括号

Python2中有xrange()                          python3中是range()

Python zhong raw_input()                                                                  python3input()

二:内存地址

=”赋值  

==”比较值是否相等    

is”比较的是内存地址

id”  id(内容)表示查看内容的地址

赋值运算指向的是同一个内存地址

对数字和字符串来说有小数据池的概念

如:a = 6     b = 6
    a =300    b = 300

 

当数字在一定的范围内时,ab内存地址一样,当超出范围时,内存地址不一样,目的:节省空间

数字的范围是:-5~256

字符串:没有特殊字符是同一个地址,有特殊字符则内存地址不同

        S * 20 是同一个地址,s * 20以后都是两个地址(s为一个字符)

List , dict , tuple , set集合 没有小数据池的概念

三:编码 ASCII    Unicode    UTF-8      GBK

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

②文件的传输,存储不能是Unicode(太浪费空间)

四:python3

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

新数据类型:bytes类型;和str类似,区别是编码方式,bytes编码方式是UTF-8GBK或者GB2312str的编码方式是Unicode

对于英文:str:表现形式为s =abcd

              编码方式为01010101    Unicode

          bytes:表现形式为s = babcd

                编码方式为utf-8   gbk

对于中文:str:表现形式为s=‘中国’

              编码方式为01010101    Unicode

          bytes:表现形式为s = bx\e91\e91\e01......16进制

                编码方式为utf-8   gbk

 

五:str转化为bytes类型

encode() 编码

英文:

s1 = ‘alex’
s2 = s1.encode(‘UTF -8’)
print(s2)

 

结果:b’alex’

 

中文:

转化为UTF-8的编码方式为:

s1 = ‘中国
s2 = s1.encode(‘UTF -8’)
print(s2)

 

结果:b’\xe4\xb8\xad\xe5\x9b\xbd’   (三个字节为一个字符)

 

 

转化为GBK的编码方式为:

s1 = ‘中国
s2 = s1.encode(‘GBK’)
print(s2)

 

结果:b’\xd6\xd0\xb9\xfa’   (两个个字节为一个字符)

  

 

posted @ 2019-03-02 14:53  红领巾***  阅读(230)  评论(0编辑  收藏  举报