其實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/envpython
#-*-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/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))
輸出結果:
<
class
'
str
'>2
<
class
'
str
'>2
<
class
'
bytes
'>4
-
編碼
+關注
關注
6文章
940瀏覽量
54814 -
字符串
+關注
關注
1文章
578瀏覽量
20506 -
python
+關注
關注
56文章
4792瀏覽量
84628
發布評論請先 登錄
相關推薦
評論