其實(shí)Python3中對字符串支持的改進(jìn),不僅僅是更改了默認(rèn)編碼,而是重新進(jìn)行了字符串的實(shí)現(xiàn),而且它已經(jīng)實(shí)現(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中對字符串的支持進(jìn)行了實(shí)現(xiàn)類層次的上簡化,去掉了unicode類,添加了一個bytes類。從表面上來看,可以認(rèn)為Python3中的str和unicode合二為一了。
class
bytes
(
object
)
class
str
(
object
)
實(shí)際上,Python3中已經(jīng)意識到之前的錯誤,開始明確的區(qū)分字符串與字節(jié)。因此Python3中的str已經(jīng)是真正的字符串,而字節(jié)是用單獨(dú)的bytes類來表示。也就是說,Python3默認(rèn)定義的就是字符串,實(shí)現(xiàn)了對UNICODE的內(nèi)置支持,減輕了程序員對字符串處理的負(fù)擔(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文章
942瀏覽量
54829 -
字符串
+關(guān)注
關(guān)注
1文章
579瀏覽量
20516 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84688
發(fā)布評論請先 登錄
相關(guān)推薦
新手Python學(xué)習(xí)該學(xué)Python2還是Python3
python2和python3同時安裝的詳細(xì)步驟
python2和python3是如何互相切換的
python2與python3問題的分析
python字符串拼接方式了解
python3如何取出重復(fù)3次的字符串保存為3列
python2與python3到底有什么區(qū)別
![<b class='flag-5'>python2</b>與<b class='flag-5'>python3</b>到底有什么區(qū)別](https://file.elecfans.com/web1/M00/C7/20/pIYBAF9hxvuASwmpAAPUWKKRGLw441.png)
什么是復(fù)制字符串?Python如何復(fù)制字符串
python字符串有哪些特定方法
Python字符編碼轉(zhuǎn)換
![<b class='flag-5'>Python</b><b class='flag-5'>字符</b>編碼轉(zhuǎn)換](https://file1.elecfans.com/web2/M00/8C/10/wKgZomSlKM2AJzeuAAAldVnmAjg283.jpg)
評論