其实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
全部0条评论
快来发表一下你的评论吧 !