其實Python3中對字符串支持的改進,不僅僅是更改了默認編碼,而是重新進行了字符串的實現(xiàn),而且它已經(jīng)實現(xiàn)了對UNICODE的內(nèi)置支持,從這方面來講Python已經(jīng)和JAVA一樣優(yōu)秀。下面我們來看下Python2與Python3中對字符串的支持有什么區(qū)別:
Python2
Python2中對字符串的支持由以下三個類提供
class basestring(object)
class str(basestring)
class unicode(basestring)
執(zhí)行help(str)和help(bytes)會發(fā)現(xiàn)結(jié)果都是str類的定義,這也說明Python2中str就是字節(jié)串,而后來的unicode對象對應(yīng)才是真正的字符串。
#!/usr/bin/envpython
#-*-coding:utf-8-*-
a=
'你好'
b=
u'你好'
print(type(a),len(a))
print(type(b),len(b))
輸出結(jié)果:
(
<>
'str'>,
6
)
(
<>
'unicode'>,
2
)
Python3
Python3中對字符串的支持進行了實現(xiàn)類層次的上簡化,去掉了unicode類,添加了一個bytes類。從表面上來看,可以認為Python3中的str和unicode合二為一了。
class
bytes
(
object
)
class
str
(
object
)
實際上,Python3中已經(jīng)意識到之前的錯誤,開始明確的區(qū)分字符串與字節(jié)。因此Python3中的str已經(jīng)是真正的字符串,而字節(jié)是用單獨的bytes類來表示。也就是說,Python3默認定義的就是字符串,實現(xiàn)了對UNICODE的內(nèi)置支持,減輕了程序員對字符串處理的負擔(dān)。
#!/usr/bin/envpython
#-*-coding:utf-8-*-
a=
'你好'
b=
u'你好'
c=
'你好'
.encode(
'gbk'
)
print(type(a),len(a))
print(type(b),len(b))
print(type(c),len(c))
輸出結(jié)果:
<
class
'
str
'>2
<
class
'
str
'>2
<
class
'
bytes
'>4
-
編碼
+關(guān)注
關(guān)注
6文章
940瀏覽量
54814 -
字符串
+關(guān)注
關(guān)注
1文章
578瀏覽量
20506 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84627
發(fā)布評論請先 登錄
相關(guān)推薦
評論