python基礎(chǔ)篇_第1頁(yè)
python基礎(chǔ)篇_第2頁(yè)
python基礎(chǔ)篇_第3頁(yè)
python基礎(chǔ)篇_第4頁(yè)
python基礎(chǔ)篇_第5頁(yè)
已閱讀5頁(yè),還剩45頁(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)介

1、幾個(gè) python 的編輯器vim 或者 emacspython基礎(chǔ)篇整理: jims of 肥肥世家copyright ? 2004 ,2005,2006 本文遵從 gnu 的自由文檔許可證 (free document license)的條款,歡迎轉(zhuǎn)載、修改、散布。發(fā)布時(shí)間: 2004年 07 月 10 日更新時(shí)間: 2006年 06 月 14 日,把參考篇的內(nèi)容合并進(jìn)來(lái)。table of contents1. 緒論1.1. python歷史1.2. python功能簡(jiǎn)介1.3. 應(yīng)用范圍1.4. 如何開(kāi)始?2. python編程習(xí)慣與特點(diǎn)2.1. 代碼風(fēng)格2.2. 保留字2.3. pyt

2、hon運(yùn)算符和表達(dá)式2.3.1. python運(yùn)算符2.3.2. 運(yùn)算符優(yōu)先順序2.3.3. 真值表2.3.4. 復(fù)合表達(dá)式2.4. 給變量賦值3. python內(nèi)建對(duì)象類型3.1. number數(shù)值型3.2. string 字符串型3.2.1. 字符串的格式化3.2.2. 轉(zhuǎn)義字符3.2.3. unicode 字符串3.2.4. 原始字符串3.3. list 列表3.4. tuple 元組3.5. 序列對(duì)象3.6. dictionary 字典3.7. file 文件3.8. 理解引用3.9. copy and deepcopy3.10. 標(biāo)識(shí)數(shù)據(jù)類型3.11. 數(shù)組對(duì)象4. 控制語(yǔ)句5. 函

3、數(shù)5.1. 常用函數(shù)5.2. 內(nèi)置類型轉(zhuǎn)換函數(shù)5.3. 序列處理函數(shù)6. 模塊6.1. string 模塊6.2. time 模塊7. 類8. 異常處理9. 文件處理9.1. 文件處理的函數(shù)和方法9.2. 示例10. 正則表達(dá)式10.1. 基本元素10.2. 操作11. 調(diào)試12. how-tolist of tables1.1. python命令行選項(xiàng)2.1. python運(yùn)算符列表2.2. 運(yùn)算符優(yōu)先順序列表 (從最高到最低 )2.3. 3.1. 字符串格式化代碼3.2. python 支持的轉(zhuǎn)義字符表3.3. 列表對(duì)象支持的方法3.4. 字典方法3.5. 數(shù)組類型代碼9.1. mode9

4、.2. bufsize9.3. 文件對(duì)象方法10.1. 正則表達(dá)式基本字符10.2. 匹配限定符10.3. 組和運(yùn)算符10.4. 特殊字符序列10.5. 正則表達(dá)式聲明10.6. 處理標(biāo)志10.7. matchobject 對(duì)象方法10.8. 正則式對(duì)象方法 /屬性chapter 1. 緒論table of contents1.1. python歷史1.2. python功能簡(jiǎn)介1.3. 應(yīng)用范圍1.4. 如何開(kāi)始?1.1. python歷史python 是一種開(kāi)源的面向?qū)ο蟮哪_本語(yǔ)言,它起源于 1989 年末,當(dāng)時(shí),cwi(阿姆斯特丹國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所)的研究員guido van r

5、ossum需要一種高級(jí)腳本編程語(yǔ)言,為其研究小組的amoeba 分布式操作系統(tǒng)執(zhí)行管理任務(wù)。 為創(chuàng)建新語(yǔ)言, 他從高級(jí)數(shù)學(xué)語(yǔ)言abc(all basic code )汲取了大量語(yǔ)法,并從系統(tǒng)編程語(yǔ)言modula-3 借鑒了錯(cuò)語(yǔ)處理機(jī)制。 van rossum把這種新的語(yǔ)言命名為python(大蟒蛇)-來(lái)源于 bbc 當(dāng)時(shí)正在熱播的喜劇連續(xù)劇“monty python ”。python 于 1991 年初公開(kāi)發(fā)行,由于功能強(qiáng)大和采用開(kāi)源方式發(fā)行,python 的發(fā)展得很快,用戶越來(lái)越多,形成了一個(gè)強(qiáng)大的社區(qū)力量。 2001年,python 的核心開(kāi)發(fā)團(tuán)隊(duì)移師digital creations 公

6、司,該公司是zope(一個(gè)用 python編寫的 web 應(yīng)用服務(wù)器)的創(chuàng)始者。現(xiàn)在最新的版本是 python2.3.4, 大家可到 上了解最新的python 動(dòng)態(tài)和資料。1.2. python功能簡(jiǎn)介python 是一種解析性的, 交互式的, 面向?qū)ο蟮木幊陶Z(yǔ)言, 類似于 perl、tcl、scheme或 java 。python 一些主要功能介紹 : python 使用一種優(yōu)雅的語(yǔ)法,可讀性強(qiáng)。python 是一種很靈活的語(yǔ)言,能幫你輕松完成編程工作。并可作為一種原型開(kāi)發(fā)語(yǔ)言,加快大型程序的開(kāi)發(fā)速度。有多種數(shù)據(jù)類型: numbers (intege

7、rs, floating point, complex, and unlimited-length long integers), strings (ascii 和 unicode), lists, dictionaries。python 支持類和多層繼承等的面向?qū)ο缶幊碳夹g(shù)。代碼能打包成模塊和包,方便管理和發(fā)布。支持異常處理,能有效捕獲和處理程序中發(fā)生的錯(cuò)誤。強(qiáng)大的動(dòng)態(tài)數(shù)據(jù)類型支持,不同數(shù)據(jù)類型相加會(huì)引發(fā)一個(gè)異常。python 支持如生成器和列表嵌套等高級(jí)編程功能。自動(dòng)內(nèi)存碎片管理,有效利用內(nèi)存資源。強(qiáng)大的類庫(kù)支持,使編寫文件處理、正則表達(dá)式,網(wǎng)絡(luò)連接等程序變得相當(dāng)容易。python 的交互

8、命令行模塊能方便地進(jìn)行小代碼調(diào)試和學(xué)習(xí)。python 易于擴(kuò)展,可以通過(guò)c 或 c+編寫的模塊進(jìn)行功能擴(kuò)展。python 解析器可作為一個(gè)編程接口嵌入一個(gè)應(yīng)用程序中。python 可運(yùn)行在多種計(jì)算機(jī)平臺(tái)和操作系統(tǒng)中,如各位unix,windows,macos,os/2 等等。python 是開(kāi)源的,可自由免費(fèi)使用和發(fā)布,并且可用于商業(yè)用途以獲取利潤(rùn)。 如想詳細(xì)了解python的許可協(xié)議可到以下網(wǎng)址查詢/psf/license.html1.3. 應(yīng)用范圍系統(tǒng)編程, 提供大量系統(tǒng)接口api,能方便進(jìn)行系統(tǒng)維護(hù)和管理。圖形處理, 有 pil、tkinter 等

9、圖形庫(kù)支持,能方便進(jìn)行圖形處理。數(shù)學(xué)處理, numpy 擴(kuò)展提供大量與許多標(biāo)準(zhǔn)數(shù)學(xué)庫(kù)的接口,文本處理, python 提供的 re 模塊能支持正則表達(dá)式,還提供sgml,xml 分析模塊,許多程序員利用python 進(jìn)行 xml 程序的開(kāi)發(fā)。數(shù)據(jù)庫(kù)編程,程序員可通過(guò)遵循python db-api (數(shù)據(jù)庫(kù)應(yīng)用程序編程接口)規(guī)范的模塊與microsoft sql server, oracle, sybase ,db2,mysql 等數(shù)據(jù)庫(kù)通信。 python 自帶有一個(gè) gadfly 模塊,提供了一個(gè)完整的sql 環(huán)境。網(wǎng)絡(luò)編程, 提供豐富的模塊支持sockets編程,能方便快速地開(kāi)發(fā)分布式應(yīng)用

10、程序。作為 web 應(yīng)用的開(kāi)發(fā)語(yǔ)言,支持最新的xml 技術(shù)。多媒體應(yīng)用, python 的 pyopengl 模塊封裝了 “opengl 應(yīng)用程序編程接口 ” ,能進(jìn)行二維和三維圖像處理。pygame模塊可用于編寫游戲軟件。1.4. 如何開(kāi)始?進(jìn)入交互命令行方式。 如果是 linux 類的系統(tǒng),python 解析器應(yīng)該已經(jīng)安裝在 /usr/local/bin/python 中,直接打 python 就可進(jìn)入交互式命令行界面,如下所示: python 2.3.3 (#1, apr 27 2004, 15:17:58) gcc 3.2 20020903 (red hat linux 8.0 3.2

11、-7) on linux2 type help, copyright, credits or license for more information. “”符號(hào)是 python命令行界面的提示符,可按ctrl+d 退出,如果是 windows 環(huán)境的話就要按ctrl+z 了。還可以用以下命令退出命令行界面: “import sys ;sys.exit()”。如果是 windows 系統(tǒng),可到 /download/ 下載最新的安裝程序進(jìn)行安裝。安裝完成后直接打python 也可進(jìn)入命令行界面。命令行是python 最簡(jiǎn)單直觀,也是最方便的一種執(zhí)行環(huán)境,我

12、們可以在這里學(xué)習(xí) python 語(yǔ)法和調(diào)試程序。如果要打印hello world 可以輸入以下命令:print hello world hello world 以模塊文件方式運(yùn)行。 模塊文件是包含python 語(yǔ)句的文本, 以.py結(jié)尾。運(yùn)行模塊文件只要輸入python xxx.py 就可以了。以 linux 腳本方式運(yùn)行。和shell 腳本差不多,以 vi 或其它文本編輯器輸入以下內(nèi)容 : #!/usr/local/bin/python print test . 存盤后,把文件屬性改為可執(zhí)行,就可象shell 腳本一樣執(zhí)行了。table 1.1. python 命令行選項(xiàng)選項(xiàng)作用-c cmd

13、 在命令行直接執(zhí)行python 代碼。如 python -c print hello world。-d 腳本編譯后從解釋器產(chǎn)生調(diào)試信息。同pythondebug=1。-e 忽略環(huán)境變量。-h 顯示 python 命令行選項(xiàng)幫助信息。選項(xiàng)作用-i 腳本執(zhí)行后馬上進(jìn)入交互命令行模式。同pythoninspect=1。-o 在執(zhí)行前對(duì)解釋器產(chǎn)生的字節(jié)碼進(jìn)行優(yōu)化。同 pythonoptimize=1。-oo 在執(zhí)行前對(duì)解釋器產(chǎn)生的字節(jié)碼進(jìn)行優(yōu)化,并刪除優(yōu)化代碼中的嵌入式文檔字符串。-q arg 除法規(guī)則選項(xiàng), -qold(default),-qwarn,-qwarnall ,-qnew 。-s 解釋器

14、不自動(dòng)導(dǎo)入site.py模塊。-t 當(dāng)腳本的 tab 縮排格式不一致時(shí)產(chǎn)生警告。-u 不緩沖 stdin 、stdout 和 stderr ,默認(rèn)是緩沖的。同pythonunbuffered=1。-v 產(chǎn)生每個(gè)模塊的信息。如果兩個(gè)-v 選項(xiàng),則產(chǎn)生更詳細(xì)的信息。同 pythonverbose=x。-v 顯示 python 的版本信息。-w arg 出錯(cuò)信息控制。 (arg is action:message:category:module:lineno) -x 忽略源文件的首行。要在多平臺(tái)上執(zhí)行腳本時(shí)有用。file 執(zhí)行 file里的代碼。- 從 stdin里讀取執(zhí)行代碼。chapter 2.

15、 python編程習(xí)慣與特點(diǎn)table of contents2.1. 代碼風(fēng)格2.2. 保留字2.3. python運(yùn)算符和表達(dá)式2.3.1. python運(yùn)算符2.3.2. 運(yùn)算符優(yōu)先順序2.3.3. 真值表2.3.4. 復(fù)合表達(dá)式2.4. 給變量賦值2.1. 代碼風(fēng)格在 python 中,每行程序以換行符代表結(jié)束,如果一行程序太長(zhǎng)的話,可以用 “ ” 符號(hào)擴(kuò)展到下一行。 在 python 中以三引號(hào) () 括起來(lái)的字符串, 列表,元組和字典都能跨行使用。 并且以小括號(hào) (.)、中括號(hào) .和大括號(hào) . 包圍的代碼不用加 “ ” 符也可擴(kuò)展到多行。如:在 python中是以縮進(jìn)來(lái)區(qū)分程序功能

16、塊的, 縮進(jìn)的長(zhǎng)度不受限制,但就一個(gè)功能塊來(lái)講,最好保持一致的縮進(jìn)量。如果一行中有多條語(yǔ)句,語(yǔ)句間要以分號(hào)(;)分隔。以“#”號(hào)開(kāi)頭的內(nèi)容為注釋,python 解釋器會(huì)忽略該行內(nèi)容。在 python 中,所有標(biāo)識(shí)符可以包括英文、數(shù)字以及下劃線(_),但不能以數(shù)字開(kāi)頭。python 中的標(biāo)識(shí)符是區(qū)分大小寫的。以下劃線開(kāi)頭的標(biāo)識(shí)符是有特殊意義的。以單下劃線開(kāi)頭 (_foo)的代表不能直接訪問(wèn)的類屬性,需通過(guò)類提供的接口進(jìn)行訪問(wèn),不能用 “from xxx import *”而導(dǎo)入;以雙下劃線開(kāi)頭的 (_foo)代表類的私有成員; 以雙下劃線開(kāi)頭和結(jié)尾的 (_foo_) 代表 python里特殊方法

17、專用的標(biāo)識(shí),如_init_()代表類的構(gòu)造函數(shù)。在交互模式下運(yùn)行python 時(shí),一個(gè)下劃線字符 (_)是特殊標(biāo)識(shí)符,它保留了表達(dá)式的最后一個(gè)計(jì)算結(jié)果。 hello hello _ hello 10+10 20 _ 20 在 python 中,函數(shù)、類、模塊定義的第一段代碼如果是字符串的話,就把它叫作文件字串,可通過(guò)_doc_屬性訪問(wèn)。如 : def test(): this is a document string return 100+1000 print test._doc_ this is a document string 2.2. 保留字and elif global or yie

18、ld assert else if pass break except import print class exec in raise continue finally is return def for lambda try del from not while 2.3. python運(yùn)算符和表達(dá)式2.3.1. python運(yùn)算符table 2.1. python 運(yùn)算符列表運(yùn)算符描述x+y,x-y 加、減,“ +”號(hào)可重載為連接符x*y ,x*y ,x/y ,x%y 相乘、求平方、相除、求余,“*”號(hào)可重載為重復(fù),“ % ”號(hào)可重載為格式化,=,=,!= 比較運(yùn)算符運(yùn)算符描述+=, -=

19、, *=, /=, %= , *= , =,&=,=,|= 自變運(yùn)算符x|y 按位或xy 按位異或x&y 按位與x 按位取反xy x 向左或向右移 y 位is, is not 等同測(cè)試in, not in 是否為成員測(cè)試or ,and,not 邏輯運(yùn)算符xi,xi:j,x.y ,x(.) 索引,分片,限定引用,函數(shù)調(diào)用(.),.,.,. 元組,列表,字典,轉(zhuǎn)化為字符串2.3.2. 運(yùn)算符優(yōu)先順序table 2.2. 運(yùn)算符優(yōu)先順序列表(從最高到最低 )運(yùn)算符描述expr 字符串轉(zhuǎn)換key:expr,. 字典expr1,expr2. 列表(expr1,expr2,.) 元組fun

20、ction(expr,.) 函數(shù)調(diào)用xindex:index 切片xindex 下標(biāo)索引取值x.attribute 屬性引用x 按位取反+x,-x 正,負(fù)x*y 冪x*y ,x/y ,x%y 乘,除,取模x+y,x-y 加,減xy 移位x&y 按位與運(yùn)算符描述xy 按位異或x|y 按位或xy,x=y,xy 比較x is y,x is not y 等同測(cè)試x in y,x not in y 成員判斷not x 邏輯否x and y 邏輯與x or y 邏輯或lambda arg,.:expr lambda匿名函數(shù)2.3.3. 真值表table 2.3. 對(duì)象/ 常量 值 假string

21、真0 假=1 真 a,b=10,20 a and b #a is true 20 a,b=0,5 #a is false a and b 0 對(duì)于 or,當(dāng)計(jì)算 a or b時(shí),python 會(huì)計(jì)算 a,如果 a為真,則整個(gè)表達(dá)式取 a值,如果 a為假,表達(dá)式將取b 值。如: a,b=10,20 a or b 10 a,b=0,5 a or b 5 對(duì)于 not,not 將反轉(zhuǎn)表表達(dá)式的 “ 實(shí)際值 ” ,如果表達(dá)式為真, not為返回假,如為表達(dá)式為假,not 為返回真。如: not 2 false not 0 true not test false not true 2.4. 給變量賦值簡(jiǎn)

22、單賦值, variable(變量 )=value(值)。a=1 b=2 print a,b 1 2 多變量賦值, variable1,variable2,.=value1,value2,. a,b,c=1,2,3 print a 1 print b 2 print c 3 多變量賦值也可用于變量交換,接上例:a,b,c=c,b,a print a 3 print b 2 print c 1 多目標(biāo)賦值, a=b=variable a=b=1 a 1 b 1 a=2 a 2 b 1 自變賦值,如 +=,-=,*=等。在自變賦值中, python 僅計(jì)算一次,而普通寫法需計(jì)算兩次;自變賦值會(huì)修改原

23、始對(duì)象,而不是創(chuàng)建一個(gè)新對(duì)象。chapter 3. python內(nèi)建對(duì)象類型table of contents3.1. number數(shù)值型3.2. string 字符串型3.2.1. 字符串的格式化3.2.2. 轉(zhuǎn)義字符3.2.3. unicode 字符串3.2.4. 原始字符串3.3. list 列表3.4. tuple 元組3.5. 序列對(duì)象3.6. dictionary 字典3.7. file 文件3.8. 理解引用3.9. copy and deepcopy3.10. 標(biāo)識(shí)數(shù)據(jù)類型3.11. 數(shù)組對(duì)象在 python 中,所有數(shù)據(jù)都是對(duì)象,數(shù)據(jù)有各種類型,如數(shù)值型、列表型、字符串型等。

24、除系統(tǒng)內(nèi)建的數(shù)據(jù)類型外,程序員也可以創(chuàng)建自已的數(shù)據(jù)類型。以下主要介紹python內(nèi)建的數(shù)據(jù)類型。3.1. number 數(shù)值型在 python 中,數(shù)值有四種類型,分別是整型、長(zhǎng)整形、浮點(diǎn)型和復(fù)數(shù)。整型-從-2147483648至 2147483647,有符號(hào)位 32 位長(zhǎng),可表達(dá)的最大數(shù)為 231-1。如: number=123,number1=-123。在數(shù)字前加 0 x 或 0x 前綴表示十六進(jìn)制數(shù), 在數(shù)字前加前綴0 表示八進(jìn)制數(shù),與 c/c+ and perl 一樣。為方便起見(jiàn), sys 模塊包含一個(gè) maxint 成員,該成員保留了整形變量的最大正數(shù)值。 import sys pr

25、int sys.maxint 2147483647 長(zhǎng)整型 -python 支持任意長(zhǎng)度的長(zhǎng)整型,長(zhǎng)整型的最大值和最小值由可用的內(nèi)存確定。 長(zhǎng)整型數(shù)在數(shù)字常量尾加l or l ,一般都是用 l,因?yàn)樾懙膌 太容易與數(shù)字 1 混淆了。如:long=1232132131231232132132131l。浮點(diǎn)數(shù) -python 支持普通十進(jìn)制和科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù)。如:number=123.456,nubmer1=123.2e10。浮點(diǎn)數(shù)在 python 中的存儲(chǔ)格式與 c 中的雙精度數(shù)相同。復(fù)數(shù)-復(fù)數(shù)的實(shí)部和虛部用加號(hào)分開(kāi),虛部使用后綴j 表示,如:number=1.2+2j 3.2. str

26、ing 字符串型字符串在 python 被看成是單個(gè)字符的序列,具有序列對(duì)象的特殊功能,字符串是固定的,不可變的。如:string=hello world ??稍谧址惺褂脝我?hào)和雙引號(hào)。如:string=im a boy 。字符串內(nèi)部的一個(gè)反斜杠“ ” 可允許把字符串放于多行:如: test . python test python 使用三個(gè)單引號(hào)或雙引號(hào)可使字符串跨行顯示。如:helptext=this a help test.if you have any quesions. please call me anytime.i will help you.i like python.i

27、hope so as you. 使用“+”號(hào)可連接字符串。如:string = hello + world ,注意,不能將字符串與其它對(duì)象進(jìn)行連接。如string = ok + 5 。其實(shí)不用“+”號(hào),直接用空格也可連接兩個(gè)字符串。如:string=hello world ??捎谩?”號(hào)重復(fù)字符串,如:hello*5 會(huì)生成hellohellohellohellohello 。可用索引訪問(wèn)字符串中的字符。如:string=hello world ,print string1將顯示字符 e。字符串可用 in 或 not in 運(yùn)算符來(lái)測(cè)試字符是不屬于一個(gè)字符串的成員??蓪?duì)字符串分片,如strin

28、g=hello world,print string6: 將顯示world。分片的格式為: stringstart:end 分片和索引的規(guī)則如下:o返回的字符串包含從start 起始到 end但不包括 end結(jié)束的所有字符。o若指定了 start 但未指定 end, 則一直向后分片, 直至字符串結(jié)束。o若指定了 end但未指定 start,則從 0 開(kāi)始分片直至end,但不包括 end指定的字符。o若 start 和 end為負(fù)數(shù),則索引從字符串尾部開(kāi)始算起,最后一個(gè)字符為 -1。python 提供了一個(gè) string 模塊來(lái)進(jìn)行字符串處理。3.2.1. 字符串的格式化象 c 中的 sprin

29、tf 函數(shù)一樣,可以用 “% ” 來(lái)格式化字符串。table 3.1. 字符串格式化代碼格式描述% 百分號(hào)標(biāo)記%c 字符及其 ascii 碼%s 字符串%d 有符號(hào)整數(shù) (十進(jìn)制 ) %u 無(wú)符號(hào)整數(shù) (十進(jìn)制 ) %o 無(wú)符號(hào)整數(shù) (八進(jìn)制 ) %x 無(wú)符號(hào)整數(shù) (十六進(jìn)制 ) %x 無(wú)符號(hào)整數(shù) (十六進(jìn)制大寫字符 ) %e 浮點(diǎn)數(shù)字 ( 科學(xué)計(jì)數(shù)法 ) %e 浮點(diǎn)數(shù)字 ( 科學(xué)計(jì)數(shù)法,用 e代替 e) %f 浮點(diǎn)數(shù)字 ( 用小數(shù)點(diǎn)符號(hào) ) %g 浮點(diǎn)數(shù)字 ( 根據(jù)值的大小采用 %e或%f) %g 浮點(diǎn)數(shù)字 ( 類似于 %g) %p 指針(用十六進(jìn)制打印值的內(nèi)存地址) %n 存儲(chǔ)輸出字符的數(shù)

30、量放進(jìn)參數(shù)列表的下一個(gè)變量中% 格式化符也可用于字典, 可用%(name) 引用字典中的元素進(jìn)行格式化輸出。負(fù)號(hào)指時(shí)數(shù)字應(yīng)該是左對(duì)齊的,“0”告訴 python 用前導(dǎo) 0 填充數(shù)字,正號(hào)指時(shí)數(shù)字總是顯示它的正負(fù)(+,-) 符號(hào),即使數(shù)字是正數(shù)也不例外??芍付ㄗ钚〉淖侄螌挾龋纾?5d % 2。也可用句點(diǎn)符指定附加的精度,如:%.3d % 3 。3.2.2. 轉(zhuǎn)義字符在需要在字符中使用特殊字符時(shí),python 用反斜杠 ()轉(zhuǎn)義字符。如下表:table 3.2. python支持的轉(zhuǎn)義字符表轉(zhuǎn)義字符描述( 在行尾時(shí) ) 續(xù)行符 反斜杠符號(hào) 單引號(hào) 雙引號(hào)a 響鈴b 退格(backspace)

31、e 轉(zhuǎn)義000 空n 換行v 縱向制表符t 橫向制表符r 回車f 換頁(yè)oyy 八進(jìn)制數(shù) yy 代表的字符,例如: o12 代表?yè)Q行xyy 十進(jìn)制數(shù) yy 代表的字符,例如: x0a 代表?yè)Q行other 其它的字符以普通格式輸出3.2.3. unicode字符串在 python2.0 中才完全支持unicode 字符串, unicode 字符采用 16位(0-65535)值表示,能進(jìn)行多語(yǔ)言支持。要使用unicode 字符串,只要在字符串前加上 “u”即可。如: a=utest print a test 原始 unicode 字符串用 ur 前綴,如: uhello world0020 uhel

32、lo worldx020 urhello world0020 uhello world0020 . unicode轉(zhuǎn)換只要和 unicode 連接,就會(huì)產(chǎn)生unicode 字串。如: help help help , + upython uhelp ,python 對(duì)于 ascii(7 位)兼容的字串,可和內(nèi)置的 str()函數(shù)把 unicode 字串轉(zhuǎn)換成 ascii 字串。如: str(uhello world) hello world 轉(zhuǎn)換非 ascii 兼容的字串會(huì)出錯(cuò)。編碼和譯碼字符串時(shí)的錯(cuò)誤引發(fā)unicodeerror異常??墒褂?encode()函數(shù)轉(zhuǎn)換 unico

33、de 字串格式:uunicodexb1xe0 xc2xebxb2xe2xcaxd4 a.encode(utf-8) #轉(zhuǎn)換成 utf-8 ,顯示結(jié)果會(huì)根據(jù)終端的字符集支持不同而不同,下面是在gb18030下的顯示結(jié)果x94 可使用 unicode()函數(shù)把字符串轉(zhuǎn)換成unicode 格式,如: a=uunicode測(cè)試 a uunicodexb2xe2xcaxd4 a.encode(utf-8) #把 unicode 字串轉(zhuǎn)換成 utf-8 unicodexc2xb2xc3xa2xc3x8axc3x94 b=a.encode(utf-8) #給變量 b 賦值 b unicodexc2xb2xc

34、3xa2xc3x8axc3x94 unicode(b,utf-8) #用 unicode() 函數(shù)把 utf-8格式字串轉(zhuǎn)換回 unicode 格式。uunicodexb2xe2xcaxd4 #和原始的這是 a 相同ord()支持 unicode,可以顯示特定字符的unicode 號(hào)碼,如:ord(a) 65 使用 unichr()函數(shù)可將 unicode 號(hào)碼轉(zhuǎn)換回 unicode字符,如: unichr(65) ua a = 中國(guó) a.encode(gb2312) traceback (most recent call last): file , line 1, in ? file /us

35、r/lib/python2.3/encodings/gb2312.py, line 21, in encode if c unicode(a,utf-8) uu4e2du56fd b = unicode(a,utf-8) print b 中國(guó) c = b.encode(gb2312) c xd6xd0 xb9xfa print c # c 是 gb2312 字符集的中國(guó),在我的 utf-8系統(tǒng)中顯示亂碼是正常的。? ps :我的 shell環(huán)境是 utf-8 。3.2.4. 原始字符串有時(shí)我們并不想讓轉(zhuǎn)義字符生效,我們只想顯示字符串原來(lái)的意思,這就要用 r 和 r 來(lái)定義原始字符串。如:pri

36、nt rtr 實(shí)際輸出為 “ r” 。3.3. list 列表列表是序列對(duì)象,可包含任意的python 數(shù)據(jù)信息,如字符串、數(shù)字、列表、元組等。列表的數(shù)據(jù)是可變的,我們可通過(guò)對(duì)象方法對(duì)列表中的數(shù)據(jù)進(jìn)行增加、修改、刪除等操作。 可以通過(guò) list(seq)函數(shù)把一個(gè)序列類型轉(zhuǎn)換成一個(gè)列表。列表的幾個(gè)例子:olist = a, b, c ,這是字符列表。olist = 1, 2, 3, 4 ,這是數(shù)字列表。olist = 1,2,3,4, a,b,c ,這是列表的列表。olist = (1,2,3,4), (a,b,c) ,這是元組列表。olist(1,2) 把一個(gè)元組轉(zhuǎn)換成一個(gè)列表1,2,lis

37、t(test)可把字符串轉(zhuǎn)換成 t,e,s,t列表。訪問(wèn)列表可通過(guò)索引來(lái)引用,如:list0 將引用列表的第一個(gè)值。list0:1 返回第一和第二個(gè)元素。用 range()和 xrange()函數(shù)可自動(dòng)生成列表,具體用法請(qǐng)參考“python 參考篇 ” 的內(nèi)容。可通過(guò)列表綜合來(lái)創(chuàng)建列表, 該功能是在 python2.0 版本中新增加的。如果想對(duì)列表中的每個(gè)項(xiàng)進(jìn)行運(yùn)算并把結(jié)果存儲(chǔ)在一個(gè)新列表中,可者想創(chuàng)建一個(gè)僅包含特定滿足某種條件的項(xiàng),采用該方法是很適合的。 如:x*x for x in range(1,10) 會(huì)得到一個(gè) x 的平方的新列表;我們還可添加if 條件控制輸出,如:x*x for

38、x in range(1,10) if x%2=0;還可在列表中使用多個(gè)for 語(yǔ)句,如: x+y for x in 123 for y in abc 1a, 1b, 1c, 2a, 2b, 2c, 3a, 3b, 3c x,y 值可取列表或元組等,以構(gòu)成更復(fù)雜的結(jié)構(gòu)?!?”號(hào)可連接兩個(gè)列表。訪問(wèn)列表的列表 (嵌套列表 )可用 list10 , 這將訪問(wèn)嵌套中的第二個(gè)列表的第一個(gè)元素??捎脭?shù)字與列表相乘以復(fù)制內(nèi)容,如:list*2 會(huì)得到一個(gè)1,2,3,4,1,2,3,4的列表。注意,不能用列表與列表相乘。由于列表是可變的, 我們可用賦值語(yǔ)句進(jìn)行操作,如:list0 = 2 。列表對(duì)象方法可對(duì)

39、列表進(jìn)行操作,如列表內(nèi)容的添加,刪除,排序等。如 list.sort()可對(duì) list 列表進(jìn)行排序。table 3.3. 列表對(duì)象支持的方法方法描述append(x) 在列表尾部追加單個(gè)對(duì)象x。使用多個(gè)參數(shù)會(huì)引起異常。count(x) 返回對(duì)象 x 在列表中出現(xiàn)的次數(shù)。extend(l) 將列表 l 中的表項(xiàng)添加到列表中。返回none 。index(x) 返回列表中匹配對(duì)象x 的第一個(gè)列表項(xiàng)的索引。 無(wú)匹配元素時(shí)產(chǎn)生異常。insert(i,x) 在索引為 i 的元素前插入對(duì)象x。 如 list.insert(0,x)在第一項(xiàng)前插入對(duì)象。返回none 。pop(x) 刪除列表中索引為x 的表項(xiàng)

40、,并返回該表項(xiàng)的值。 若未指定索引, pop 返回列表最后一項(xiàng)。remove(x) 刪除列表中匹配對(duì)象x 的第一個(gè)元素。匹配元素時(shí)產(chǎn)生異常。返回 none 。方法描述reverse() 顛倒列表元素的順序。sort() 對(duì)列表排序,返回none。bisect模塊可用于排序列表項(xiàng)的添加和刪除。3.4. tuple 元組tuple(元組)和 list(列表 )很相似,但元組是不可變的。不能對(duì)元組中的元素進(jìn)行添加,修改和刪除操作。如果需修改元組內(nèi)容只有重建元組。元組用小括號(hào)來(lái)表示。如tuple=(1,2,3)。tuple=(1,),這是單個(gè)元素的元組表示,需加額外的逗號(hào)。tuple=1,2,3,4,

41、這也可以是一個(gè)元組,在不使用圓括號(hào)而不會(huì)導(dǎo)致混淆時(shí), python 允許不使用圓括號(hào)的元組。和列表一樣, 可對(duì)元組進(jìn)行索引、 分片、連接和重復(fù)。 也可用 len()求元組長(zhǎng)度。元組的索引用 tuplei的形式,而不是 tuple(i)。和列表類似,使用tuple(seq)可把其它序列類型轉(zhuǎn)換成元組。3.5. 序列對(duì)象上面介紹的字符串、列表和元組的對(duì)象類型均屬于稱為序列的python對(duì)象。它是一種可使用數(shù)字化索引進(jìn)行訪問(wèn)其中元素的對(duì)象。可用算術(shù)運(yùn)算符聯(lián)接或重復(fù)序列。比較運(yùn)算符 (,=,!=,=)也可用于序列。可通過(guò)下標(biāo) (test1),切片 (test1:3)和解包來(lái)訪問(wèn)序列的某部份。解包示例如

42、下:s=1,2,3 x,y,z=s print x,y,z 1,2,3 in 運(yùn)算符可判斷當(dāng)有對(duì)象是否序列對(duì)象成員,如: list = 1,2,3 1 in list 1 4 in list 0 也可通過(guò)循環(huán)運(yùn)算符對(duì)序列對(duì)象進(jìn)行迭代操作。如: for day in days: print day 有關(guān)序列的處理函數(shù)請(qǐng)參考“python 參考篇 ” 相關(guān)內(nèi)容, 這里就不詳細(xì)講了。3.6. dictionary 字典字典是一個(gè)用大括號(hào)括起來(lái)的鍵值對(duì),字典元素分為兩部份,鍵(key)和值。字典是python 中唯一內(nèi)置映射數(shù)據(jù)類型。通過(guò)指定的鍵從字典訪問(wèn)值。如:monthdays = jan:31,

43、 feb:28, mar:31, apr:30, may:31, jun:30, jul:31, aug:31, sep:30, oct:31, nov:30,dec:31 字典可嵌套,可以在一個(gè)字典里包含另一個(gè)字典。如test=test:mytest:10 可用鍵訪問(wèn)字典,如monthdaysjan,可訪問(wèn)值 31。如果沒(méi)有找到指定的鍵,則解釋器會(huì)引起異常。字典是可修改, 如 monthdaysjan=30,可把 jan的值由 31 改為30。如 monthdaystest=30 可添加一個(gè)新鍵值對(duì)。del monthdaystest可刪除字典條目。字典不屬序列對(duì)象,所以不能進(jìn)行連接和相乘操

44、作。字典是沒(méi)有順序的。字典提供 keys和 values方法, 用來(lái)返回字典中定義的所有鍵和值。和列表一樣,字典也提供了對(duì)象方法來(lái)對(duì)字典進(jìn)行操作。table 3.4. 字典方法方法描述has_key(x) 如果字典中有鍵x,則返回真。keys() 返回字典中鍵的列表values() 返回字典中值的列表。items() 返回 tuples 的列表。每個(gè) tuple 由字典的鍵和相應(yīng)值組成。clear() 刪除字典的所有條目。copy() 返回字典高層結(jié)構(gòu)的一個(gè)拷貝,但不復(fù)制嵌入結(jié)構(gòu),而只復(fù)制對(duì)那些結(jié)構(gòu)的引用。update(x) 用字典 x 中的鍵值對(duì)更新字典內(nèi)容。get(x,y) 返回鍵 x,若

45、未找到該鍵返回none,若提供 y,則未找到 x時(shí)返回 y。3.7. file文件可用內(nèi)置的 open()函數(shù)對(duì)文件進(jìn)行操作。如:input = open(test.txt) for line in input.readlines(): print line input.close() 3.8. 理解引用python 把一塊數(shù)據(jù)存儲(chǔ)在對(duì)象中,變量是對(duì)象的唯一引用;它們是計(jì)算機(jī)內(nèi)存中特殊地點(diǎn)的名字。所有對(duì)象都具有唯一的身份號(hào)、類型和值。對(duì)象的類型不會(huì)改變,對(duì)于可變類型而言,它的值是可變的。 id(obj)函數(shù)可用于檢索對(duì)象的身份,也就是內(nèi)存中的對(duì)象的地址。每個(gè)對(duì)象都包含引用計(jì)數(shù)器,它記錄當(dāng)前有多

46、少個(gè)變量正在引用該對(duì)象。當(dāng)給對(duì)象指定一個(gè)變量或使對(duì)象成為列表或其它包容器的成員時(shí),引用計(jì)數(shù)就增加;當(dāng)從包容器中撤消、重新分配或刪除對(duì)象時(shí),引用計(jì)數(shù)減少。當(dāng)引用計(jì)數(shù)達(dá)到0 值時(shí)(即沒(méi)有任何變量引用這個(gè)對(duì)象 ),python 的回收機(jī)制會(huì)自動(dòng)回收它使用的內(nèi)存。注意, del 可用來(lái)刪除變量,但不能刪除對(duì)象。sys.getrefcount(obj)函數(shù)可返回給定對(duì)象的引用計(jì)數(shù)。3.9. copy and deepcopy 通過(guò)給列表分配一個(gè)變量能創(chuàng)建對(duì)列表的引用,如果要?jiǎng)?chuàng)建列表的副本就要理解淺副本和深副本的概念。列表或其他包容器對(duì)象的淺副本(shallow)能夠生成對(duì)象本身的副本,但也會(huì)創(chuàng)建對(duì)由列表

47、包含的對(duì)象的引用。可用分片(object:)和 copy 模塊的 copy(obj)函數(shù)創(chuàng)建。列表或其他對(duì)象包容器對(duì)象的深副本能夠生成對(duì)象本身的副本,并遞歸地生成所有子對(duì)象的副本??捎?copy 模塊的 deepcopy(obj)函數(shù)創(chuàng)建。比較兩種副本,一般情況下表現(xiàn)一樣,但當(dāng)列表內(nèi)包含另一個(gè)列表的情況下,父列表的淺副本將包含對(duì)子列表引用,而不是獨(dú)立副本。其結(jié)果是,當(dāng)更改內(nèi)部列表時(shí),從父列表的兩個(gè)副本中都可見(jiàn),如: a=1,2,3,4,5 b=a: b 1, 2, 3, 4, 5 a3.remove(4) a 1, 2, 3, 5 b 1, 2, 3, 5 如果是深副本,就不會(huì)出現(xiàn)這種情況。如

48、: a=1,2,3,4,5 b=copy.deepcopy(a) b 1, 2, 3, 4, 5 a3.remove(4) a 1, 2, 3, 5 b 1, 2, 3, 4, 5 3.10. 標(biāo)識(shí)數(shù)據(jù)類型可通過(guò) type(obj)函數(shù)標(biāo)識(shí)數(shù)據(jù)類型,如: type(a) type(copy) type(1) types模塊包含 python 的內(nèi)置數(shù)據(jù)類型的類型對(duì)象。如: import types types.listtype types.inttype 3.11. 數(shù)組對(duì)象數(shù)組對(duì)象與列表類似,但數(shù)組只包含某些類型的簡(jiǎn)單數(shù)據(jù)。所以當(dāng)數(shù)據(jù)較簡(jiǎn)單,且要求性能好的情況下,使用數(shù)組是一個(gè)好的選擇。ta

49、ble 3.5. 數(shù)組類型代碼代碼等價(jià)的 c類型以字節(jié)為單位的最小尺寸c char 1 b(b) byte(unsigned byte) 1 h(h) short(unsigned short) 2 i(i) int(unsigned int) 2 l(l) long(unsigned long) 4 f float 4 d double 8 數(shù)組創(chuàng)建方法如下: import array z=array.array(b) z.append(1) z array(b, 1) 數(shù)組的 itemsize和 typecode成員可分別檢索數(shù)組項(xiàng)的大小和數(shù)組對(duì)象的類型代碼,如: z.itemsize 1

50、 z.typecode b 3.1. 數(shù)組類型與其它數(shù)據(jù)類型的轉(zhuǎn)換tolist()方法可把數(shù)組轉(zhuǎn)換為列表,如: z.tolist() 1, 2, 3 fromlist(list) 方法可把列表項(xiàng)附加到數(shù)組的末尾,如: z.fromlist(10,11) z array(b, 1, 2, 3, 10, 11) 如添加的列表類型與數(shù)組類型不同,則fromlist(list)不會(huì)把任何項(xiàng)添加到數(shù)組對(duì)象中。tostring()方法,可以把數(shù)組轉(zhuǎn)換為字節(jié)的序列,如: z.tostring() x01x02x03nx0b fromstring(list) 方法剛好與 tostring()相反,它獲取一個(gè)字

51、節(jié)串,并把它們轉(zhuǎn)換為數(shù)組的值。如: z.fromstring(x0b) z array(b, 1, 2, 3, 10, 11, 11) tofile(file) 方法可把數(shù)組轉(zhuǎn)換為字節(jié)的序列,并把它們寫入文件,如: f=open(aa,wb) z.tofile(f) f.close() fromfile(file,count) 方法用于從文件對(duì)象中讀取特定數(shù)目的項(xiàng),并把它們附加到數(shù)組中,如: z.fromfile(open(aa,rb),2) z array(b, 1, 2, 3, 10, 11, 11, 1, 2) 當(dāng)取數(shù)項(xiàng)大于文件數(shù)據(jù)項(xiàng)時(shí),formfile 會(huì)產(chǎn)生 eoferror 異常。

52、數(shù)組對(duì)象支持列表中的很多相同函數(shù)和方法:len,append等。訪問(wèn)成員的方法也可列表一樣,可用下標(biāo)和分片。chapter 4. 控制語(yǔ)句流程控制是程序設(shè)計(jì)中一個(gè)重要的內(nèi)容,python 支持三種不同的控制結(jié)構(gòu):if,for 和 while。if 語(yǔ)句判斷表達(dá)式是否為真,如果為真則執(zhí)行指定語(yǔ)句。if 語(yǔ)句的格式如下:if expression1: statement1 elif expression2: statement2 else: statement3 如果第一個(gè)表達(dá)式為真, 則執(zhí)行 statement1 , 否則進(jìn)行進(jìn)一步的測(cè)試,如果第二個(gè)表達(dá)式為真則執(zhí)行statement2 ,否則執(zhí)

53、行statement3 。注意語(yǔ)句的縮進(jìn)量要保持一致。在 python 中沒(méi)有 switch 和 case 語(yǔ)句,我們可通過(guò)多重elif來(lái)達(dá)到相同的效果。示例:#!/usr/bin/env python mytest = raw_input(please input a number:) mytest = int(mytest) if mytest = 10: print you input number is ten. elif mytest = 20: print you input number is twenty. else: print another number. 腳本的執(zhí)行效果

54、:t03:# python test.py please input a number:10 you input number is ten. t03:# python test.py please input a number:20 you input number is twenty. t03:# python test.py please input a number:777 another number. while 進(jìn)行循環(huán)控制, 它對(duì)表達(dá)式進(jìn)行測(cè)試, 如果為真, 則循環(huán)執(zhí)行循環(huán)體。格式如下:while expression: statement else: statement 如果

55、測(cè)試為假, 則會(huì)執(zhí)行 else塊。如果循環(huán)被中斷 (break),則 else塊不會(huì)執(zhí)行。示例: a = 0 while a mylist = for statement for word in mylist: . print word . else: . print end list . f o r s t a t e m e n t end list 在循環(huán)的過(guò)程中,我們可使用循環(huán)控制語(yǔ)句來(lái)控制循環(huán)的執(zhí)行。有三個(gè)控制語(yǔ)句,分別是break、continue 和 pass 。它們的作用分別是:obreak語(yǔ)句會(huì)立即退出當(dāng)前循環(huán),不會(huì)執(zhí)行else塊的內(nèi)容。示例: mylist = zope,p

56、ython,perl,linux for technic in mylist: . if technic = perl: . break . else: . print technic . zope python ocontinue 語(yǔ)句會(huì)忽略后面的語(yǔ)句,強(qiáng)制進(jìn)入下一次循環(huán)。示例: mylist = zope,python,perl,linux for technic in mylist: . if technic = perl: . continue . else: . print technic . zope python linux opass不做任何事情。示例: for technic

57、 in mylist: . if technic = perl: . pass . else: . print technic . zope python linux chapter 5. 函數(shù)table of contents5.1. 常用函數(shù)5.2. 內(nèi)置類型轉(zhuǎn)換函數(shù)5.3. 序列處理函數(shù)函數(shù)是一個(gè)能完成特定功能的代碼塊,可在程序中重復(fù)使用, 減少程序的代碼量和提高程序的執(zhí)行效率。在python 中函數(shù)定義語(yǔ)法如下:def function_name(arg1,arg2,.): statement return value 返回值不是必須的,如果沒(méi)有return語(yǔ)句,則 python 默認(rèn)

58、返回值 none 。函數(shù)名的命名規(guī)則:函數(shù)名必須以下劃線或字母開(kāi)頭,可以包含任意字母、數(shù)字或下劃線的組合。不能使用任何的標(biāo)點(diǎn)符號(hào);函數(shù)名是區(qū)分大小寫的。函數(shù)名不能是保留字。python 使用名稱空間的概念存儲(chǔ)對(duì)象,這個(gè)名稱空間就是對(duì)象作用的區(qū)域, 不同對(duì)象存在于不同的作用域。下面是不同對(duì)象的作用域規(guī)則:每個(gè)模塊都有自已的全局作用域。函數(shù)定義的對(duì)象屬局部作用域,只在函數(shù)內(nèi)有效,不會(huì)影響全局作用域中的對(duì)象。賦值對(duì)象屬局部作用域,除非使用global 關(guān)鍵字進(jìn)行聲明。lgb 規(guī)則是 python 查找名字的規(guī)則,下面是lgb 規(guī)則:大多數(shù)名字引用在三個(gè)作用域中查找:先局部(local),次之全局(g

59、lobal),再次之內(nèi)置 (build-in) 。 a=2 b=2 def test(b): . test=a*b . return test print test(10) 20 b 在局部作用域中找到,a在全局作用域中找到。如想在局部作用域中改變?nèi)肿饔糜虻膶?duì)象,必須使用global 關(guān)鍵字。#沒(méi)用 global 時(shí)的情況 name=jims def set(): . name=ringkee . set() print name jims #使用 global 后的情況 name=jims def set1(): . global name . name=ringkee . set1()

60、print name ringkee global聲明把賦值的名字映射到一個(gè)包含它的模塊的作用域中。函數(shù)的參數(shù)是函數(shù)與外部溝通的橋梁,它可接收外部傳遞過(guò)來(lái)的值。參數(shù)傳遞的規(guī)則如下:在一個(gè)函數(shù)中對(duì)參數(shù)名賦值不影響調(diào)用者。 a=1 def test(a): . a=a+1 . print a . test(a) 2 a 1 # a值不變?cè)谝粋€(gè)函數(shù)中改變一個(gè)可變的對(duì)象參數(shù)會(huì)影響調(diào)用者。 a=1 b=1,2 def test(a,b): . a=5 . b0=4 . print a,b . test(a,b) 5 4, 2 a 1 b 4, 2 # b值已被更改參數(shù)是對(duì)象指針,無(wú)需定義傳遞的對(duì)象類型。如: def test

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論