有關(guān)Python 解釋器說(shuō)明介紹
Python 解釋器包括兩個(gè)主要的子系統(tǒng):一個(gè)是表達(dá)式解析器,負(fù)責(zé)處理數(shù)字表達(dá)式;另一個(gè)是解釋器,負(fù)責(zé)程序的實(shí)際執(zhí)行,不是只能解析孤立的表達(dá)式。
用上一節(jié)介紹的方法就可以實(shí)現(xiàn)原始的用戶輸入/輸出.下邊的函數(shù)從標(biāo)準(zhǔn)輸入讀取一行文本,然后返回這行文本: 內(nèi)建函數(shù)raw_input(prompt)也可以從stdin中讀取并保存內(nèi)容: 最后要說(shuō)的是。
鍵盤中斷(通常是Ctrl+C)會(huì)引發(fā)KeyboardInterrupt異常,該異??梢员划惓L幚碚Z(yǔ)句捕獲并處理。只要需要,sys.stdout、 sys.stdin及sys.stderr的值均可以使用其它文件對(duì)象進(jìn)行替換。這樣 print 語(yǔ)句和 raw_input 函數(shù)都會(huì)使用新值。
在解釋器啟動(dòng)時(shí),sys.stdout, sys.stdin及sys.stderr可以分別使用sys.stdout, sys.stdin, 和 sys.stderr這三個(gè)名字來(lái)訪問(wèn)。注意某些場(chǎng)合 sys.stdout, sys.stdin及sys.stderr的默認(rèn)值會(huì)被改變(通常程序運(yùn)行在一個(gè)集成環(huán)境時(shí)).例如,當(dāng)在IDLE下運(yùn)行Python代碼時(shí)。
sys.stdin會(huì)被開(kāi)發(fā)環(huán)境提供的一個(gè)行為類似文件對(duì)象的對(duì)象代替.在這樣的場(chǎng)合,低層方法如read(),seek()可能會(huì)失效。在系統(tǒng)內(nèi)部,Unicode 字符串被表示為一個(gè)16位整數(shù)序列,8-bit 字符串則是一個(gè)字節(jié)序列, 絕大多數(shù)字符串操作被擴(kuò)展為能夠處理更寬范圍的字符值。
只要 Unicode 字符串被轉(zhuǎn)換為字節(jié)流,就必然會(huì)產(chǎn)生一系列問(wèn)題(需要解決)。首先,要考慮現(xiàn)有軟件的兼容性, 對(duì)那些僅支持 ASCII或其它 8-bit的軟件來(lái)說(shuō),將 Unicode字符串轉(zhuǎn)化為 ASCII字符串是較好的方法。
其次, 16-bit 字符占用兩個(gè)字節(jié),字節(jié)順序問(wèn)題雖然比較無(wú)聊但必須考慮。對(duì)一個(gè)Unicode字符 U+HHLL 來(lái)說(shuō), 小端法編碼方案將低位字節(jié)放在前面。即 LL HH;大端法編碼方案則將高位字節(jié)放在前面,即 HH LL. 就因?yàn)檫@么點(diǎn)問(wèn)題, 不指定編碼方案,你就無(wú)法將原始 Unicode 數(shù)據(jù)寫入文件.
要解決這些問(wèn)題, 只能根據(jù)特定的編碼規(guī)則將 Unicode 字符串進(jìn)行客觀表示。這些規(guī)則定義了如何將 Unicode 字符表示為字節(jié)序列。在第四章, 針對(duì) unicode()及 s.encode() 首先介紹了編碼規(guī)則。舉例來(lái)說(shuō):
- a = u"M\u00fcller"
- b = "Hello World"
- c = a.encode('utf-8') # Convert a to a UTF-8 string
- d = unicode(b) # Convert b to a Unicode string
- 復(fù)制代碼
【編輯推薦】