已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python 手冊(cè)file:/Users/moon/Incoming/py//Manual/Python/tut/index.html09-5-21 08:00:58目錄Python 手冊(cè)Guido van RossumFred L. Drake, Jr., editorPythonLabsEmail: Release 2.3July 29, 2003About this document .Python Tutorial, July 29, 2003, Release 2.3This document was generated using the LaTeX2HTML translator.LaTeX2HTML is Copyright 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds, and Copyright 1997, 1998, Ross Moore, Mathematics Department, Macquarie University, Sydney.The application of LaTeX2HTML to the Python documentation has been heavily tailored by Fred L. Drake, Jr. Original navigation icons were contributed by Christopher Petrilli.前言Copyright 2001, 2002, 2003 Python Software Foundation. All rights reserved. Copyright 2000 BeO. All rights reserved.Copyright 1995-2000 Corporation for National Research Initiatives. All rights reserved. Copyright 1991-1995 Stichting Mathematisch Centrum. All rights reserved.See the end of this document for complete license and permissions information.概要:Python 是一種容易學(xué)習(xí)的強(qiáng)大語(yǔ)言。 它包括了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),提供了一個(gè)簡(jiǎn)單但很有有效的方式以便 進(jìn)行面向?qū)ο缶幊?。Python 優(yōu)雅的語(yǔ)法,動(dòng)態(tài)數(shù)據(jù)類(lèi)型,以及它的解釋器,使其成為了大多數(shù)平臺(tái)上應(yīng)用于各 領(lǐng)域理想的腳本語(yǔ)言以及開(kāi)發(fā)環(huán)境。Python解釋器及其擴(kuò)展標(biāo)準(zhǔn)庫(kù)的源碼和編譯版本可以從Python的Web站點(diǎn)/及其所有鏡像 站上免費(fèi)獲得,并且可以自由發(fā)布。該站點(diǎn)上也提供了Python的一些第三方模塊,程序,工具,以及附加的文 檔。Python的解釋器很容易通過(guò)C或C+(或者其它可以由C來(lái)調(diào)用的語(yǔ)言)來(lái)實(shí)現(xiàn)功能和數(shù)據(jù)結(jié)構(gòu)的擴(kuò)展。因 些Python 也很適于做為定制應(yīng)用的一種擴(kuò)展語(yǔ)言。這個(gè)手冊(cè)介紹了一些Python語(yǔ)言及其系統(tǒng)的基本知識(shí)與根念。這有助于對(duì)Python有一個(gè)基本的認(rèn)識(shí),當(dāng)然所有 的例子都包括在里面了,所以這本手冊(cè)很適合離線閱讀。需要有關(guān)標(biāo)準(zhǔn)對(duì)象和模塊的詳細(xì)介紹的話,請(qǐng)查詢Python 程序庫(kù)參考手冊(cè) 文檔。Python 參考手冊(cè) 提供了更多 的關(guān)于語(yǔ)言方面的正式說(shuō)明。需要編寫(xiě)C或C+擴(kuò)展,請(qǐng)閱讀 Python 解釋器的擴(kuò)展和集成 以及Python/C API 參 考手冊(cè)。 這幾本書(shū)涵蓋了各個(gè)深度上的Python知識(shí)。本手冊(cè)不會(huì)涵蓋Python的所有功能,也不會(huì)去解釋所用到的所有相關(guān)的知識(shí)。相反,它介紹了許多Python中最 引人注目的功能,這會(huì)對(duì)讀者掌握這門(mén)語(yǔ)言的風(fēng)格大有幫助。讀過(guò)它后,你應(yīng)該可以閱讀和編寫(xiě)Python模塊和 程序了,接下來(lái)你可以從Python 庫(kù)參考手冊(cè)中進(jìn)一步學(xué)習(xí)Python復(fù)雜多變的庫(kù)和模塊了。1. 開(kāi)胃菜1. 開(kāi)胃菜如果你寫(xiě)過(guò)大規(guī)模的Shell腳本,應(yīng)該會(huì)有過(guò)這樣的體會(huì):你還非常想再加一些別的功能進(jìn)去,但它已經(jīng)太大、 太慢、太復(fù)雜了;或者這個(gè)功能需要調(diào)用一個(gè)系統(tǒng)函數(shù),或者它只適合通過(guò)C來(lái)調(diào)用通常這些問(wèn)題還不足 以嚴(yán)肅到需要用C重寫(xiě)這個(gè)Shell;可能這個(gè)功能需要一些類(lèi)似變長(zhǎng)字符串或其它一些在Shell腳本中很容易找到 的數(shù)據(jù)類(lèi)型(比如文件名的有序列表),但它們用C來(lái)實(shí)現(xiàn)就要做大量的工作,或者,你對(duì)C還不是很熟悉。另一種情況:可能你需要使用幾個(gè)C庫(kù)來(lái)工作,通常C的編寫(xiě)/編譯/測(cè)試/重編譯周期太慢。你需要盡快的開(kāi)發(fā)軟 件。也許你需要寫(xiě)一個(gè)使用擴(kuò)展語(yǔ)言的程序,但不想設(shè)計(jì)一個(gè)語(yǔ)言,并為此編寫(xiě)調(diào)試一個(gè)解釋器,然后再把它 集成進(jìn)你的程序。遇到以上情況,Python可能就是你要找的語(yǔ)言。Python很容易上手,但它是一門(mén)真正的編程語(yǔ)言,提供了 比Shell多的多的結(jié)構(gòu),支持大型程序。另一方面,它提供了比C更多的錯(cuò)誤檢查,并且,做為一門(mén)高級(jí)語(yǔ)言, 它擁有內(nèi)置的高級(jí)數(shù)據(jù)類(lèi)型,例如可變數(shù)組和字典,如果通過(guò)C來(lái)實(shí)現(xiàn)的話,這些工作可能讓你大干上幾天的 時(shí)間。因?yàn)閾碛懈嗟耐ㄓ脭?shù)據(jù)類(lèi)型,Python適合比Awk甚至Perl更廣泛的問(wèn)題領(lǐng)域,在其它的很多領(lǐng) 域,Python至少比別的語(yǔ)言要易用得多。Python可以讓你把自己的程序分隔成不同的模塊,這樣就可以在其它的Python程序中重用。這樣你就可以讓自 己的程序基于一個(gè)很大的標(biāo)準(zhǔn)模塊集或者用它們做為示例來(lái)學(xué)習(xí)Python編程。Python中集成了一些類(lèi)似文 件I/O,系統(tǒng)調(diào)用,sockets,甚至像Tk這樣的用戶圖形接口。Python是一門(mén)解釋型語(yǔ)言,因?yàn)椴恍枰幾g和鏈接的時(shí)間,它可以幫你省下一些開(kāi)發(fā)時(shí)間。解釋器可以交互式 使用,這樣就可以很方便的測(cè)試語(yǔ)言中的各種功能,以便于編寫(xiě)發(fā)布用的程序,或者進(jìn)行自下而上的開(kāi)發(fā)。還 可以當(dāng)它是一個(gè)隨手可用的計(jì)算器。Python可以寫(xiě)出很緊湊和可讀性很強(qiáng)的程序。用Python寫(xiě)的程序通常比同樣的C或C+程序要短得多,這是因?yàn)?以下幾個(gè)原因:高級(jí)數(shù)據(jù)結(jié)構(gòu)使你可以在一個(gè)單獨(dú)的語(yǔ)句中表達(dá)出很復(fù)雜的操作;語(yǔ)句的組織依賴于縮進(jìn)而不是begin/end塊;不需要變量或參數(shù)聲明。Python是可執(zhí)行的:如果你會(huì)用C語(yǔ)言寫(xiě)程序,那就可以很容易的為解釋器添加新的集成模塊和功能,或者優(yōu) 化瓶頸,使其達(dá)到最大速度,或者使Python能夠鏈接到所需的二進(jìn)制架構(gòu)上(比如某個(gè)專(zhuān)用的商業(yè)圖形庫(kù))。 等你真正熟悉這一切了,你就可以把Python集成進(jìn)由C寫(xiě)成的程序,把Python當(dāng)做這個(gè)程序的擴(kuò)展或命令行語(yǔ) 言。順便說(shuō)一下,這個(gè)語(yǔ)言的名字來(lái)源于BBC的“Monty Pythons Flying Circus”節(jié)目,和兇猛的爬蟲(chóng)沒(méi)有任何關(guān) 系。在文檔中引用Monty Python典故不僅是允許的,而且還受到鼓勵(lì)!file:/Users/moon/Incoming/py//Manual/Python/tut/node3.html09-5-21 08:01:06現(xiàn)在你已經(jīng)了解了Python中所有激動(dòng)人心的東西,大概你想仔細(xì)的試試它了。學(xué)習(xí)一門(mén)語(yǔ)言最好的辦法就是使用它,你會(huì)很樂(lè)于這樣做。下一節(jié)中,我們會(huì)很機(jī)械的說(shuō)明解釋器的用法。這沒(méi)有什么神秘的,不過(guò)有助于我們練習(xí)后面展示的例子。 本指南其它部分通過(guò)例子介紹了Python語(yǔ)言和系統(tǒng)的各種功能,開(kāi)始是簡(jiǎn)單表達(dá)式、語(yǔ)法和數(shù)據(jù)類(lèi)型,接下來(lái)是函數(shù)和模塊,最后是諸如異常和自定義類(lèi)這樣的高級(jí)內(nèi)容。Python 指南向前:目錄 向上:Python 指南 向后:2. 使用 PythonRelease 2.3, documentation updated on July 29, 2003.See About this document. for information on suggesting changes.Python中文社區(qū)2. 使用Python解釋器file:/Users/moon/Incoming/py//Manual/Python/tut/node4.html09-5-21 08:01:08Python中文社區(qū)Python 手冊(cè)向前:1. 開(kāi)胃菜 向上:Python 手冊(cè) Next: 3. 非正式入門(mén)指導(dǎo)子目錄2.1 調(diào)用解釋器2.1.1 參數(shù)傳遞2.1.2 交互模式2.2 解釋器和它的環(huán)境2.2.1 錯(cuò)誤處理2.2.2 執(zhí)行Python腳本2.2.3 源程序編碼2.2.4 交互環(huán)境的啟動(dòng)文件2. 使用Python解釋器2.1 調(diào)用解釋器通常Python的解釋器被安裝在目標(biāo)機(jī)器的 /usr/local/bin/python 目錄下;把 /usr/local/bin 目錄放進(jìn)你的UNIX Shell 的搜索路徑里,確保它可以通過(guò)輸入python來(lái)啟動(dòng)。因?yàn)榘惭b路徑是可選的,所以也有可能安裝在其它位置,你可以與安裝Python的用戶或系統(tǒng)管理員聯(lián) 系。(例如,/usr/local/python就是一個(gè)很常見(jiàn)的選擇)輸入一個(gè)文件結(jié)束符(UNIX上是Ctrl+D,Windwos上是Ctrl+Z)解釋器會(huì)以0值退出(就是說(shuō),沒(méi)有什么錯(cuò) 誤,正常退出譯者)。如果這沒(méi)有起作用,你可以輸入以下命令退出:“import sys; sys.exit()”。解釋器的行編輯功能并不很復(fù)雜。裝在Unix上的解釋器可能會(huì)有GNU readline 庫(kù)支持,這樣就可以額外得到精 巧的交互編輯和歷史記錄功能??赡軝z查命令行編輯器支持能力最方便的方式是在主提示符下輸入Ctrl+P。如果有嘟嘟聲(計(jì)算機(jī)揚(yáng)聲器),說(shuō)明你可以使用命令行編輯功能,從附錄 A 可以查到快捷鍵的介紹。如果什么也沒(méi)有發(fā)聲,或者P顯示了出來(lái),說(shuō)明命令行編輯功能不可用,你只有用退格鍵刪掉輸入的命令了。解釋器的操作有些像Unix Shell:使用終端設(shè)備做為標(biāo)準(zhǔn)輸入來(lái)調(diào)用它時(shí),解釋器交互的解讀和執(zhí)行命令,通過(guò) 文件名參數(shù)或以文件做為標(biāo)準(zhǔn)輸入設(shè)備時(shí),它從文件中解讀并執(zhí)行腳本。啟動(dòng)解釋器的第三個(gè)方法是“python -c command arg .”,這種方法可以在命令行中直接執(zhí)行語(yǔ)句,等同 于Shell的 -c選項(xiàng)。因?yàn)镻ython語(yǔ)句通常會(huì)包括空格之類(lèi)的特殊字符,所以最好把整個(gè)語(yǔ)句用雙引號(hào)包起來(lái)。注意“python file”和“python ”);繼續(xù)的部分被稱為從屬提示符,由三個(gè)點(diǎn)標(biāo)識(shí)(“. ”)。在第一行之前,解釋器打 印歡迎信息、版本號(hào)和授權(quán)提示:pythonPython 2.3 (#1, Jul 30 2003, 23:22:59) GCC 3.2 20020927 (prerelease) on cygwinType help, copyright, credits or license for more information.輸入多行結(jié)構(gòu)時(shí)需要從屬提示符了,例如,下面這個(gè) if 語(yǔ)句: the_world_is_flat = 1 if the_world_is_flat:. print Be careful not to fall off!.Be careful not to fall off!2.2 解釋器及其環(huán)境2.2.1 錯(cuò)誤處理有錯(cuò)誤發(fā)生時(shí),解釋器打印一個(gè)錯(cuò)誤信息和棧跟蹤(監(jiān)視)器?。交互模式下,它返回主提示符,如果從文件 輸入執(zhí)行,它在打印棧跟蹤器后以非零狀態(tài)退出。(異??梢杂蓆ry語(yǔ)句中的except子句來(lái)控制,這樣就不會(huì)出 現(xiàn)上文中的錯(cuò)誤信息) 有一些非常致命的錯(cuò)誤會(huì)導(dǎo)致非零狀態(tài)下退出,這由通常由內(nèi)部矛盾和內(nèi)存溢出造成。 所有的錯(cuò)誤信息都寫(xiě)入標(biāo)準(zhǔn)錯(cuò)誤流;命令中執(zhí)行的普通輸出寫(xiě)入標(biāo)準(zhǔn)輸出。在主提示符或附屬提示符輸入中斷符(通常是Control-C or DEL)就會(huì)取消當(dāng)前輸入,回到主命令行。2.1執(zhí)行 命令時(shí)輸入一個(gè)中斷符會(huì)拋出一個(gè) KeyboardInterrupt 異常,它可以被try句截獲。2.2.2 執(zhí)行Python腳本BSD系統(tǒng)中,Python腳本可以像Shell腳本那樣直接執(zhí)行,只要在腳本文件開(kāi)頭寫(xiě)一行命令,指定文件和模式:#! /usr/bin/env python(將用戶路徑通知解釋器) “#!”必須是文件的前兩個(gè)字符,在某些平臺(tái)上,第一行必須以Unix風(fēng)格的行結(jié)束符(“n”)結(jié)束,不能用Mac(“r”)或Windows(“rn”)的結(jié)束符。注意,“#”是Python中是行注釋的起始符。腳本可以通過(guò) chmod 命令指定執(zhí)行模式和許可權(quán)。$ chmod +x myscript.py2.2.3 源程序編碼Python的源文件可以通過(guò)編碼使用 ASCII 以外的字符集。 最好的做法是在 #! 行后面用一個(gè)特殊的注釋行來(lái)定 義字符集。# -*- coding: iso-8859-1 -*-根據(jù)這個(gè)聲明,Python會(huì)將文件中的字符盡可能的從指定的編碼轉(zhuǎn)為Unicode,在本例中,這個(gè)字符集是 iso-8859-1 。在 Python 庫(kù)參考手冊(cè) 中可以找到可用的編碼列表(根據(jù)我的實(shí)驗(yàn),中文似乎只能用cp-936或utf-8,不直接支持GB,GBK,GB-18030或ISO-10646譯者注)。如果你的文件編輯器支持UTF-8格式,并且可以保存UTF-8標(biāo)記(aka BOM - Byte Order Mark),你可以用這 個(gè)來(lái)代替編碼聲明(看來(lái)至少Jext還不支持這樣做,而Vim,我還沒(méi)找到它的編碼設(shè)置在哪里,還是老老實(shí)實(shí) 的用注釋行指定源代碼的編碼吧譯者注)。IDLE可以通過(guò)設(shè)定Options/General/Default Source Encoding/UTF-8 來(lái)支持它。需要注意的是舊版Python不支持這個(gè)標(biāo)記(Python 2.2或更早的版本),也同樣不 能使操作系統(tǒng)支持#!文件。使用UTF-8內(nèi)碼(無(wú)論是用標(biāo)記還是編碼聲明),我們可以在字符串和注釋中使用世界上的大部分語(yǔ)言。標(biāo)識(shí) 符中不能使用非 ASCII 字符集。為了正確顯示所有的字符,你一定要在編輯器中將文件保存為UTF-8格式,而 且要使用支持文件中所有字符的字體。2.2.4 交互式環(huán)境的啟動(dòng)文件使用Python解釋器的時(shí)候,我們可能需要在每次解釋器啟動(dòng)時(shí)執(zhí)行一些命令。你可以在一個(gè)文件中包含你想要執(zhí)行的命令,設(shè)定一個(gè)名為PYTHONSTARTUP 的環(huán)境變量來(lái)指定這個(gè)文件。這類(lèi)似于Unix shell的.profile文件。這個(gè)文件在交互會(huì)話期是只讀的,當(dāng)Python從腳本中解讀文件或以終端做為外部命令源時(shí)則不會(huì)如此(盡管它 們的行為很像是處在交互會(huì)話期。)它與解釋器執(zhí)行的命令處在同一個(gè)命名空間,所以由它定義或引用的一切 可以在解釋器中不受限制的使用。你也可以在這個(gè)文件中改變sys.ps1和sys.ps2指令。如果你想要在當(dāng)前目錄中執(zhí)行附加的啟動(dòng)文件,你可以在全局啟動(dòng)文件中加入類(lèi)似以下的代碼:“if os.path.isfile(.pythonrc.py): execfile(.pythonrc.py)”。 如果你想要在某個(gè)腳本中使用啟動(dòng)文件,必須要在腳本中 寫(xiě)入這樣的語(yǔ)句:import osfilename = os.environ.get(PYTHONSTARTUP)if filename and os.path.isfile(filename):execfile(filename)腳注. 注:2.1GNU readline包的一個(gè)錯(cuò)誤可能會(huì)造成無(wú)法正常工作。Python 手冊(cè)向前:1. 開(kāi)胃菜 向上:Python 手冊(cè) Next: 3. 非正式入門(mén)指導(dǎo)Release 2.3, documentation updated on July 29, 2003.See About this document. for information on suggesting changes.Python中文社區(qū)3. 初步認(rèn)識(shí)Pythonfile:/Users/moon/Incoming/py//Manual/Python/tut/node5.html09-5-21 08:01:11Python中文社區(qū)Python 手冊(cè)向前:2. 使用Python解釋器 向上:Python 手冊(cè) 向后: 4. 深入編程子目錄3.1 初步認(rèn)識(shí)Python3.1.1 數(shù)值3.1.2 字符串3.1.3 Unicode 字符串3.1.4 鏈表3.2 開(kāi)始編程3. Python的非正式介紹在后面的例子中,區(qū)分輸入和輸出的方法是看是否有提示符(“ ”和“. ”):想要重復(fù)這些例子的話,你 就要在提示符顯示后輸入所有的一切;沒(méi)有以提示符開(kāi)始的行,是解釋器輸出的信息。需要注意的是示例中的 從屬提示符用于多行命令的結(jié)束,它表示你需要輸入一個(gè)空行。本手冊(cè)中的很多示例都包括注釋?zhuān)踔劣幸恍┰诮换ヌ崾痉姓坌?。Python中的注釋以符號(hào)“#”起始,一直到 當(dāng)前行的結(jié)尾。注釋可能出現(xiàn)在一行的開(kāi)始,也可能跟在空格或程序代碼之后,但不會(huì)出現(xiàn)在字符串中,字符 串中的#號(hào)只代表#號(hào)。示例:# this is the first commentSPAM = 1 # and this is the second comment# . and now a third! STRING = # This is not a comment.3.1 初步認(rèn)識(shí)Python讓我們?cè)囼?yàn)一些簡(jiǎn)單的Python命令。啟動(dòng)解釋器然后等待主提示符“ ”出現(xiàn)(這用不了太久)。3.1.1 數(shù)值解釋器的行為就像是一個(gè)計(jì)算器。你可以向它輸入一個(gè)表達(dá)式,它會(huì)返回結(jié)果。表達(dá)式的語(yǔ)法簡(jiǎn)明易 懂:+,-,*,/和大多數(shù)語(yǔ)言中的用法一樣(比如C或Pascal),括號(hào)用于分組。例如: 2+24 # This is a comment. 2+24 2+2 # and a comment on the same line as code4 (50-5*6)/45 # Integer division returns the floor:. 7/32 7/-3-3像c一樣,等號(hào)(“=”)用于給變量賦值。被分配的值是只讀的。 width = 20 height = 5*9 width * height900同一個(gè)值可以同時(shí)賦給幾個(gè)變量: x = y = z = 0 # Zero x, y and z x0 y0 z0Python完全支持浮點(diǎn)數(shù),不同類(lèi)型的操作數(shù)混在一起時(shí),操作符會(huì)把整型轉(zhuǎn)化為浮點(diǎn)數(shù)。 3 * 3.75 / 1.57.5 7.0 / 23.5復(fù)數(shù)也同樣得到了支持,虛部由一個(gè)后綴“j”或者“J”來(lái)表示。帶有非零實(shí)部的復(fù)數(shù)記為“(real+imagj)”,或 者也可以通過(guò)“complex(real, imag)”函數(shù)創(chuàng)建。 1j * 1J (-1+0j) 1j * complex(0,1) (-1+0j) 3+1j*3 (3+3j) (3+1j)*3 (9+3j) (1+2j)/(1+1j) (1.5+0.5j)復(fù)數(shù)總是由實(shí)部和虛部?jī)刹糠指↑c(diǎn)數(shù)來(lái)表示??赡軓?z.real 和 z.imag 得到復(fù)數(shù)z的實(shí)部和虛部。 a=1.5+0.5j a.real1.5 a.imag0.5用于向浮點(diǎn)數(shù)和整型轉(zhuǎn)化的函數(shù)(float(), int() 和 long())不能對(duì)復(fù)數(shù)起作用沒(méi)有什么方法可以將復(fù)數(shù) 轉(zhuǎn)化為實(shí)數(shù)。可以使用abs(z)取得它的模,也可以通過(guò)z.real得到它的實(shí)部。 a=3.0+4.0j float(a)Traceback (most recent call last): File , line 1, in ?TypeError: cant convert complex to float; use e.g. abs(z) a.real3.0 a.imag4.0 abs(a) # sqrt(a.real*2 + a.imag*2)5.0交互模式下,最近一次表達(dá)式輸出保存在_變量中。這意味著把Python當(dāng)做桌面計(jì)算器使用時(shí),它可以更容易 的進(jìn)行連續(xù)計(jì)算,例如: tax = 12.5 / 100 price = 100.50 price * tax12.5625 price + _113.0625 round(_, 2)113.06這個(gè)變量對(duì)于用戶來(lái)說(shuō)是只讀的。不要試圖去給它賦值由于Python的語(yǔ)法效果,你只會(huì)創(chuàng)建一個(gè)同名的局 部變量覆蓋它。3.1.2 字符串除了數(shù)值,Python還可以通過(guò)幾種不同的方法操作字符串。字符串用單引號(hào)或雙引號(hào)標(biāo)識(shí): spam eggsspam eggs doesnt doesnt doesnt doesnt Yes, he said.Yes, he said. Yes, he said.Yes, he said. Isnt, she said.Isnt, she said.字符串可以通過(guò)幾種方式分行??梢栽谛屑臃葱备茏鰹槔^續(xù)符,這表示下一行是當(dāng)前行的邏輯沿續(xù)。hello = This is a rather long string containingnseveral lines of text just as you would do in C.nNote that whitespace at the beginning of the line issignificant.print hello注意換行用 n 來(lái)表示;反斜杠后面的新行標(biāo)識(shí)(newline,縮寫(xiě)“n”)會(huì)轉(zhuǎn)換為換行符,示例會(huì)按如下格式打 ?。篢his is a rather long string containingseveral lines of text just as you would do in C.Note that whitespace at the beginning of the line is significant.然而,如果我們創(chuàng)建一個(gè)“raw”行,n序列就不會(huì)轉(zhuǎn)為換行,示例源碼最后的反斜杠和換行符n都會(huì)做為字符 串中的數(shù)據(jù)處理。如下所示:hello = rThis is a rather long string containingnseveral lines of text much as you would do in C.print hello會(huì)打印為:This is a rather long string containingnseveral lines of text much as you would do in C.或者,字符串可以用一對(duì)三重引號(hào)”或來(lái)標(biāo)識(shí)。三重引號(hào)中的字符串在行尾不需要換行標(biāo)記,所有的格 式都會(huì)包括在字符串中。print Usage: thingy OPTIONS-h Display this usage message-H hostname Hostname to connect toproduces the following output:Usage: thingy OPTIONS-h Display this usage message-H hostname Hostname to connect to解釋器打印出來(lái)的字符串與它們輸入的形式完全相同:內(nèi)部的引號(hào),用反斜杠標(biāo)識(shí)的引號(hào)和各種怪字符,都精 確的顯示出來(lái) 。如果字符串中包含單引號(hào),不包含雙引號(hào),可以用雙引號(hào)引用它,反之可以用單引號(hào)。(后面 介紹的print語(yǔ)句,可以可以用來(lái)寫(xiě)沒(méi)有引號(hào)和反斜杠的字符串)。字符串可以用+號(hào)聯(lián)接(或者說(shuō)粘合),也可以用*號(hào)循環(huán)。 word = Help + A wordHelpA 兩個(gè)字符串值之間的聯(lián)接是自動(dòng)的,上例第一行可以寫(xiě)成“word = Help A”這種方式只對(duì)字符串值有效,任 何字符串表達(dá)式都不適用這種方法。 import string str ing# string.strip(str)+ ing# string.strip(str)ing#-This is invalidFile , line 1, in ?string.strip(str) ingSyntaxError: invalid syntax字符串可以用下標(biāo)(索引)查詢;就像C一樣,字符串的第一個(gè)字符下標(biāo)是0。這里沒(méi)有獨(dú)立的字符類(lèi)型,字符 僅僅是大小為一的字符串。就像在Icon中那樣,字符串的子串可以通過(guò)切片標(biāo)志來(lái)表示:兩個(gè)由冒號(hào)隔開(kāi)的索 引。 word4A word0:2He word2:4lp切片索引可以使用默認(rèn)值;省略前一個(gè)索引表示0,省略后一個(gè)索引表示被切片的字符串的長(zhǎng)度。 word:2 # The first two charactersHe word2: # All but the first two characterslpA和C字符串不同,Python字符串不能改寫(xiě)。按字符串索引賦值會(huì)產(chǎn)生錯(cuò)誤。 word0 = xTraceback (most recent call last): File , line 1, in ?TypeError: object doesnt support item assignment word:1 = SplatTraceback (most recent call last): File , line 1, in ?TypeError: object doesnt support slice assignment然而,可以通過(guò)簡(jiǎn)單有效的組合方式生成新的字符串: x + word1:xelpA Splat + word4SplatA切片操作有一個(gè)很有用的不變性: s:i + si: 等于s。 word:2 + word2:HelpA word:3 + word3:HelpA退化的切片索引被處理的很優(yōu)美:過(guò)大的索引代替為字符串大小,下界比上界大的返回空字符串。 word1:100elpA word10: word2:1索引可以是負(fù)數(shù),計(jì)數(shù)從右邊開(kāi)始,例如: word-1 # The last characterA word-2 # The last-but-one characterp word-2: # The last two characterspA word:-2 # All but the last two charactersHel不過(guò)-0還是0,所以它不是從右邊計(jì)數(shù)的! word-0 # (since -0 equals 0)H越界的負(fù)切片索引會(huì)被截?cái)?,不過(guò)不要嘗試在前元素索引(非切片的)中這樣做: word-100:HelpA word-10 # errorTraceback (most recent call last): File , line 1, in ?IndexError: string index out of range理解切片的最好方式是把索引視為兩個(gè)字符之間的點(diǎn),第一個(gè)字符的左邊是0,字符串中第n個(gè)字符的右邊是索 引n,例如:+-+-+-+-+-+| H | e | l | p | A |+-+-+-+-+-+0 1 2 3 4 5-5 -4 -3 -2 -1第一行是字符串中給定的0到5各個(gè)索引的位置,第二行是對(duì)應(yīng)的負(fù)索引。從i到j(luò)的切片由這兩個(gè)標(biāo)志之間的字 符組成。對(duì)于非負(fù)索引,切片長(zhǎng)度就是兩索引的差。例如,word1:3的長(zhǎng)度是2。 內(nèi)置函數(shù) len() 返回字符串長(zhǎng)度: s = supercalifragilisticexpialidocious len(s)343.1.3 Unicode 字符串從Python2.0開(kāi)始,程序員們可以使用一種新的數(shù)據(jù)類(lèi)型來(lái)存儲(chǔ)文本數(shù)據(jù):Unicode 對(duì)象。它可以用于存儲(chǔ)多 種Unicode數(shù)據(jù)(請(qǐng)參閱 / ),并且,通過(guò)必要時(shí)的自動(dòng)轉(zhuǎn)換,它可以與現(xiàn)有的字符串 對(duì)象良好的結(jié)合。Unicode針對(duì)現(xiàn)代和舊式的文本中所有的字符提供了一個(gè)序列。 以前,字符只能使用256個(gè)序號(hào),文本通常通過(guò) 綁定代碼頁(yè)來(lái)與字符映射。這很容易導(dǎo)致混亂,特別是軟件的國(guó)際化(internationalization通常寫(xiě) 做“i18n”“i”+18 characters +“n”)。Unicode通過(guò)為所有字符定義一個(gè)統(tǒng)一的代碼頁(yè)解決了這個(gè)問(wèn) 題。Python中定義一個(gè)Unicode字符串和定義一個(gè)普通字符串一樣簡(jiǎn)單: uHello World ! uHello World !引號(hào)前小寫(xiě)的“u”表示這里創(chuàng)建的是一個(gè)Unicode字符串。如果你想加入一個(gè)特殊字符,可以使用Python的Unicode-Escape 編碼。如下例所示: uHellou0020World ! uHello World !被替換的 u0020 標(biāo)識(shí)表示在給定位置插入編碼值為 0x0020 的 Unicode字符(空格符)。 其它字符也會(huì)被直接解釋成對(duì)應(yīng)的Unicode碼。如果你有一個(gè)在西方國(guó)家常用的Latin-1編碼字符串,你可以發(fā)現(xiàn)Unicode字符集的前256個(gè)字符與Lation-1的對(duì)應(yīng)字符編碼完全相同。另外,有一種與普通字符串相同的行模式。想要使用Python的Raw-Unicode-Escape 編碼,你需要在字符串的引 號(hào)前加上 ur 前綴。如果在小寫(xiě)“u”前可能有不止一個(gè)反斜杠,它只會(huì)把那些單獨(dú)的 uXXXX 轉(zhuǎn)化為Unicode字 符。 urHellou0020World ! uHello World ! urHellou0020World ! uHellou0020World !行模式在你需要輸入很多個(gè)反斜杠時(shí)很有用,可能會(huì)用于正規(guī)表達(dá)式。 作為這些編碼標(biāo)準(zhǔn)的一部分,Python提供了一個(gè)完備的方法集用于從已知的編碼集創(chuàng)建Unicode字符串。 內(nèi)置函數(shù)unicode() 提供了訪問(wèn)(編碼和解碼)所有已注冊(cè)的Unicode編碼的方法。它能轉(zhuǎn)換眾所周知的 Latin-1,ASCII, UTF-8, 和 UTF-16。后面的兩個(gè)可變長(zhǎng)編碼字符集用一個(gè)或多個(gè)byte存儲(chǔ)Unicode字符。 默認(rèn)的字符集是 ASCII ,它只處理0到127的編碼,拒絕其它的字符并返回一個(gè)錯(cuò)誤。當(dāng)一個(gè)Unicode字符串被打印、寫(xiě)入文件或通過(guò)str()轉(zhuǎn)化時(shí),它們被替換為默認(rèn)的編碼。 uabc uabc str(uabc)abc u uxe4xf6xfc str(u)Traceback (most recent call last): File , line 1, in ?UnicodeEncodeError: ascii codec cant encode characters in position 0-2: ordinal not in range(128)要把一個(gè)Unicode字符串用指定的字符集轉(zhuǎn)化成8位字符串,可以使用Unicode對(duì)象提供的encode()方法,它有一 個(gè)參數(shù)用以指定編碼名稱。編碼名稱小寫(xiě)。 u.encode(utf-8)xc3xa4xc3xb6xc3xbc如果你有一個(gè)特定編碼的字符串,想要把它轉(zhuǎn)為Unicode字符集,可以使用uncode()函數(shù),它以編碼名做為第 二個(gè)參數(shù)。 unicode(xc3xa4xc3xb6xc3xbc, utf-8)uxe4xf6xfc3.1.4 鏈表Python 已經(jīng)有了幾個(gè)復(fù)合數(shù)據(jù)類(lèi)型,用于組織其它的值。最通用的是鏈表,它寫(xiě)為中括之間用逗號(hào)分隔的一列 值(子項(xiàng)),鏈表的子項(xiàng)不一定是同一類(lèi)型的值。 a = spam, eggs, 100, 1234 aspam, eggs, 100, 1234像字符串一樣,鏈表也以零開(kāi)始,可以被切片,聯(lián)接,等等: a0spam a31234 a-2100 a1:-1 eggs, 100 a:2 + bacon, 2*2 spam, eggs, bacon, 4 3*a:3 + Boe!spam, eggs, 100, spam, eggs, 100, spam, eggs, 100, Boe!與不變的字符串不同,鏈表可以改變每個(gè)獨(dú)立元素的值: aspam, eggs, 100, 1234 a2 = a2 + 23 aspam, eggs, 123, 1234可以進(jìn)行切片操作,甚至還可以改變鏈表的大?。?# Replace some items:. a0:2 = 1, 12 a1, 12, 123, 1234 # Remove some:. a0:2 = a123, 1234 # Insert some:. a1:1 = bletch, xyzzy a123, bletch, xyzzy, 1234
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)保設(shè)備制造與技術(shù)許可合同
- 2024年虛擬現(xiàn)實(shí)內(nèi)容制作與授權(quán)合同
- 運(yùn)輸租賃合同
- 2024年跨境電商平臺(tái)貨物運(yùn)輸合同
- 2024年版城市供水設(shè)施改造合同協(xié)議
- 二零二五年度城市道路照明電氣安裝規(guī)范及運(yùn)維服務(wù)合同3篇
- 2025年度電子商務(wù)平臺(tái)合作合伙協(xié)議合同3篇
- 兒童托管服務(wù)家長(zhǎng)監(jiān)護(hù)責(zé)任免責(zé)協(xié)議
- 2025板材電商平臺(tái)合作與運(yùn)營(yíng)管理合同3篇
- 核電站運(yùn)營(yíng)合同
- 《中國(guó)近現(xiàn)代史綱要(2023版)》課后習(xí)題答案合集匯編
- 家庭管理量表(FaMM)
- 腰椎間盤(pán)突出癥的射頻治療
- 2023屆河南省洛陽(yáng)市平頂山市許昌市濟(jì)源市高三一模語(yǔ)文試題
- 【超星爾雅學(xué)習(xí)通】《老子》《論語(yǔ)》今讀網(wǎng)課章節(jié)答案
- 配電箱采購(gòu)技術(shù)要求
- 上海外國(guó)語(yǔ)大學(xué)附屬外國(guó)語(yǔ)學(xué)校2020-2021七年級(jí)下學(xué)期期中英語(yǔ)試卷+答案
- 綠色施工措施措施 四節(jié)一環(huán)保
- TCSES 71-2022 二氧化碳地質(zhì)利用與封存項(xiàng)目泄漏風(fēng)險(xiǎn)評(píng)價(jià)規(guī)范
- GB/T 8561-2001專(zhuān)業(yè)技術(shù)職務(wù)代碼
- GB/T 7661-2009光學(xué)零件氣泡度
評(píng)論
0/150
提交評(píng)論