Python2与Python3中对字符串的支持

描述

其实Python3中对字符串支持的改进,不仅仅是更改了默认编码,而是重新进行了字符串的实现,而且它已经实现了对UNICODE的内置支持,从这方面来讲Python已经和JAVA一样优秀。下面我们来看下Python2与Python3中对字符串的支持有什么区别:

Python2

Python2中对字符串的支持由以下三个类提供

class basestring(object)

    class str(basestring)

    class unicode(basestring)

执行help(str)和help(bytes)会发现结果都是str类的定义,这也说明Python2中str就是字节串,而后来的unicode对象对应才是真正的字符串。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

a = 

'你好'

b = 

u'你好'

print(type(a), len(a))

print(type(b), len(b))

输出结果:

(

<>

 'str'>, 

6

)

(

<>

 'unicode'>, 

2

)

Python3

Python3中对字符串的支持进行了实现类层次的上简化,去掉了unicode类,添加了一个bytes类。从表面上来看,可以认为Python3中的str和unicode合二为一了。

class

 

bytes

(

object

)

class

 

str

(

object

)

实际上,Python3中已经意识到之前的错误,开始明确的区分字符串与字节。因此Python3中的str已经是真正的字符串,而字节是用单独的bytes类来表示。也就是说,Python3默认定义的就是字符串,实现了对UNICODE的内置支持,减轻了程序员对字符串处理的负担。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

a = 

'你好'

b = 

u'你好'

c = 

'你好'

.encode(

'gbk'

)

print(type(a), len(a))

print(type(b), len(b))

print(type(c), len(c))

输出结果:

<

class

 '

str

'> 2

<

class

 '

str

'> 2

<

class

 '

bytes

'> 4

 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分