如何正常使用Python語言
很多用戶在使用Python時(shí),都遇到種種的問題,本人覺得將Python列為黑客應(yīng)當(dāng)學(xué)習(xí)的四種編程語言之一,并建議人們從Python開始學(xué)習(xí)編程,下面文章進(jìn)行對(duì)Python語言進(jìn)行學(xué)習(xí)了解。
在Python中有兩種默認(rèn)的字符串:str和unicode。在使用Python中一定要注意區(qū)分“Unicode字符串”和“unicode對(duì)象”的區(qū)別。后面所有的“unicode字符串”指的都是python里的“unicode對(duì)象”。
事實(shí)上在Python中并沒有“Unicode字符串”這樣的東西,只有“unicode”對(duì)象。一個(gè)傳統(tǒng)意義上的unicode字符串完全可以用str對(duì)象表示。只是這時(shí)候它僅僅是一個(gè)字節(jié)流,除非解碼為unicode對(duì)象,沒有任何實(shí)際的意義。
可以看出在控制臺(tái),中文字符的編碼是GBK而不是UTF-16。將字符串s(GBK編碼)使用decode進(jìn)行解碼后,可以得到同等的unicode對(duì)象。
注意:可以在控制臺(tái)打印ss并不代表它可以直接被序列化,比如:
向文件直接輸出ss會(huì)拋出同樣的異常。在處理unicode中文字符串的時(shí)候,必須首先對(duì)它調(diào)用encode函數(shù),轉(zhuǎn)換成其它編碼輸出。這一點(diǎn)對(duì)各個(gè)環(huán)境都一樣??偨Y(jié):在使用Python中,“str”對(duì)象就是一個(gè)字節(jié)數(shù)組。
至于里面的內(nèi)容是不是一個(gè)合法的字符串,以及這個(gè)字符串采用什么編碼(gbk, utf-8, unicode)都不重要。這些內(nèi)容需要用戶自己記錄和判斷。這些的限制也同樣適用于“unicode”對(duì)象。要記住“unicode”對(duì)象中的內(nèi)容可絕對(duì)不一定就是合法的unicode字符串。
我們很快就會(huì)看到這種情況??偨Y(jié):在windows的控制臺(tái)上,支持gbk編碼的str對(duì)象和unicode編碼的unicode對(duì)象。在windows下的IDLE中,運(yùn)行效果和windows控制臺(tái)不完全一致:
可以看出,對(duì)于不使用“u”作標(biāo)識(shí)的字符串,IDLE把其中的中文字符進(jìn)行GBK編碼。但是對(duì)于使用“u”的unicode字符串,IDLE居然一樣是用了GBK編碼,不同的是,這時(shí)候每一個(gè)字符都是unicode(對(duì)象)字符??!此時(shí)len(ss) = 4。
【編輯推薦】