




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
\h\hPython \h\hPythonPython1開始.........................................2§1.1.1如何運(yùn)行Python程序............................2一切皆為對(duì)象....................................3基本類型......................................3§1.3.1整型(integer)................................3§1.3.2浮點(diǎn)型(float)................................3§1.3.3None類型..................................3§1.3.4邏輯表達(dá)式.................................3列表(list)......................................6§1.4.1創(chuàng)建list...................................6§1.4.2list的下標(biāo)和子list..............................6§1.4.3子list的提取.................................7§1.4.4處理list的方法...............................8§1.4.5用list模擬其他常用數(shù)據(jù)結(jié)構(gòu).......................§1.4.6listcomprehension............................字符串 ..................................§1.5.1字符串的表示................................§1.5.2轉(zhuǎn)換成為其他類型.............................§1.5.3字符串的操作................................元組(tuple).....................................序列(sequence)...................................字典(dictionary)..................................§1.8.1簡單例子..................................§1.8.2dictionary的操作..............................程序流程......................................§1.9.1分支結(jié)構(gòu)if..................................§1.9.2循環(huán)結(jié)構(gòu)for,while,break,continue,range().............§1.10.......................................基本函數(shù)的用法..............................參數(shù)個(gè)數(shù)可選,參數(shù)有默認(rèn)值......................改變函數(shù)參數(shù)賦值順序..........................個(gè)數(shù)可變參數(shù)...............................DocString函數(shù)描述...........................lambda函數(shù)................................函數(shù)的作用域(scope)...........................嵌套函數(shù)(nested).............................function的參數(shù)傳遞............................ §1.11.1創(chuàng)建一個(gè) §1.11.2EI么查找 §1.12namespace(命名空間 §1.13 §1.13.1什么是 §1.13.2什么是class §1.13.3property和 §1.13.4boundmethord和unbound §1.13.5繼承 §1.13.6靜態(tài)成員變 Abstrace §1.13.8私有 §1.13.9Python中class寸殊的 §1.13.11newstyle §1.14異常處理 §1.14.1什么是異常處理,為什么要有異常處 §1.14.3拋出 \h\hPython \h\hPython開發(fā)Python使用Emacs?輯Python程序...........................§2.1.1安裝pythonmode..............................§2.1.2pythonmode的基本寸性.........................§2.1.3常用功2舉例................................其他?輯ì.....................................調(diào)試程序......................................§2.3.1使用DDD和pydb調(diào)試python程序....................Python內(nèi)置模塊......................................§3.1.1常用函數(shù)..................................§3.1.2類型轉(zhuǎn)換函數(shù)................................§3.1.3用千執(zhí)行程序的內(nèi)置函數(shù).........................和操作Xú?關(guān)的調(diào)用...............................§3.2.1打開文件..................................§3.2.2讀寫文件..................................§3.2.3關(guān)閉文件..................................regular ................................§3.3.1簡單的regexp................................§3.3.2字符集合..................................§3.3.3重復(fù).....................................§3.3.4使用原始字符串..............................§3.3.5使用re模塊.................................§3.3.6高級(jí)regexp.................................§3.3.7分組(Group)................................§3.3.8CompileFlag...............................用struct模塊處理二??數(shù)據(jù)...........................用Cmd?........................§3.5.1簡單的例子.................................§3.5.2定義默認(rèn)命令................................§3.5.3處理EOF..................................處理空命令.................................命令行自動(dòng)補(bǔ)齊..............................改變標(biāo)準(zhǔn)輸入輸出.............................改變提示符.................................提供t-幫助功2.............................運(yùn)行Shell的功2.............................. getattr功2的使用............................處理命令行選項(xiàng)..................................§3.6.1一個(gè)簡單的例子..............................§3.6.2帶有參數(shù)的命令行選項(xiàng)........................... optparser模塊...............................關(guān)千?間的模塊..................................socket?程.....................................§3.8.1介紹.....................................§3.8.2簡單的例子.................................§3.8.3創(chuàng)建 ................................§3.8.4綁定 ................................§3.8.5建立連接..................................§3.8.6收送數(shù)據(jù)..................................§3.8.7斷開連接..................................§3.8.8其他輔助函數(shù)................................ TCP和UDP的區(qū)別............................§3.8.10關(guān)千TCP服務(wù)器的話題.........................接收郵件......................................POP3協(xié)議介紹..................................§3.10.1一個(gè)簡單的例子..............................§3.10.2使用POP3協(xié)議接收郵件.........................§3.10.3多行響應(yīng)的處理..............................§3.10.4POP3通信過程中的狀態(tài).........................§3.10.5POP3中的命令..............................用poplib模塊收取郵件..............................§3.12SMTP協(xié)議介 SMTP的一個(gè)例子.............................發(fā)送郵件的命令..............................其他命令..................................ESMTP.................................登錄認(rèn)證..................................TkinterTkinter介紹.....................................§4.1.1什么是 ..............................HelloTkinter程序.................................§4.2.1簡單的例子.................................§4.2.2另一個(gè)簡單程序..............................Widget...................................GeometryManager(A何管理器).........................§4.4.1Pack管理器.................................§4.4.2Grid管理器.................................Widget...................................§4.5.1,色.....................................§4.5.2字體.....................................§4.5.3文字格式化.................................§4.5.4邊框.....................................§4.5.5鼠標(biāo).....................................事件和事件的幫定.................................§4.6.1一個(gè)簡單的例子..............................§4.6.2事件處理函數(shù)................................§4.6.3事件的層次.................................§4.6.4同一個(gè)事件的多個(gè)處理函數(shù)........................§4.6.5和WM相關(guān)的事件綁定..........................常用的應(yīng)用程序使用的Widget...........................§4.7.1基本窗口..................................§4.7.2菜單.....................................§4.7.3工具 §4.7.4狀態(tài) §4.7.5標(biāo)準(zhǔn)對(duì)話 第五章Python的擴(kuò) §5.1用C編寫擴(kuò)展模 \h\hPython\h\hPython Tkinter系統(tǒng)層次 toolbar1.py的運(yùn)行結(jié) statusbar1.py的運(yùn)行結(jié) 字符串中的轉(zhuǎn)意字符...............................字符串轉(zhuǎn)換為其他類型..............................判斷字符串是否屬千某種類別的函數(shù)......................1.13-可以重載的算術(shù)操作符函數(shù)...........................Python的重用內(nèi)置函數(shù).............................類型轉(zhuǎn)換函數(shù)...................................系統(tǒng)調(diào)用舉例...................................struct模塊中的格式定義.............................字節(jié)順序定義...................................命令行編輯的快捷鍵...............................表示時(shí)間的.....................................用千轉(zhuǎn)換字節(jié)順序的函數(shù).............................TCP和UDP的區(qū)別...............................3.11-10poplib命令總 4.5-1tkFont支持的 4.6-2事件描述舉 4.6-3描述事件的參 \h\hPython\h\hPython第一章Python介紹解釋型速度偏慢,開發(fā)周期短,調(diào)試容易,自我擴(kuò)展性。由千有ea的功2,編寫的程序可以t運(yùn)行時(shí)繼續(xù)開發(fā)。這是很多解釋型語言的共性。如VB有ScriptEngi-neer,Lis有EAL,導(dǎo)致Emacs的強(qiáng)大擴(kuò)展性。面向?qū)ο髏Pytho中,類(class),函數(shù)(function,模塊(module)等等都是對(duì)象??鋸埖恼f,他比Ja,C++更加OO(ObjectOrieted。別讓我卷入“什么叫做更OO?Ja更OO?的討論中,用過就知道了。每個(gè)語言都有各自的優(yōu)缺點(diǎn),而Python吸取了更多語言的優(yōu)點(diǎn)??蓴U(kuò)展Python使用C語言寫的,很自然的用C或者C+語言擴(kuò)展Pytho的寸性。如編寫新的模塊,增加新的數(shù)據(jù)類型等等??汕度隤ython的解釋器引擎可以很容易的嵌入到用戶自己的C或者C++語言程序項(xiàng)目中,使你的程序可以支持腳本編程,擴(kuò)展功2?,F(xiàn)t就有Python的模塊可以擴(kuò)小內(nèi)核Python動(dòng)態(tài)類型不需要事先聲明(declare)變量的類型,直接使用變量就像很多其他解釋型語言VB,VBScript,JScript,PERL強(qiáng)類型盡管變量不用聲明(declare)類型,但是一旦變量有了值,那么這個(gè)值是有一個(gè)類型這和VB,VBScript,JScript,PERL不一樣,和Java像?!?.2§1.2---Python介 如何運(yùn)行Python 如er,VB,Bash,Awk,Sed都有類似的,第一種方法是交互式。假設(shè)你是tUnix環(huán)境下,$Python2.2(#1,Apr122002,[GCC2.9620000731(RedHatLinux7.22.96-109)]onlinux2Type"help","copyright","credits"or"license"formore>>>print"HelloWorld"HelloWorld #按CTRL+DtWindws中也有類似的環(huán)境。本文中大多數(shù)例子都是t交互式運(yùn)行的。>>>和...示Python的提示符號(hào)。Bash下的很多命令行編輯命令都是可以使用的,如C-a,C-,C-w等等,因?yàn)樗麄兌际鞘褂胷eadline還可以把程序?qū)憈一個(gè)文件中,用python$catprint"Hello$pythontest.pyHelloWorld$cattest.py|python#Hello$python<test.py HelloWorld把程序作為一個(gè)可以運(yùn)行的Unix$cattest.pyprint"HelloWorld"$ls-l-rw-r--r- 1chunywan 40Sep1213:34$chmod+x$ls-l\h\hPython\h\hPython-rwxr-xr- 1chunywan 40Sep1213:34Hello注意到第一行的寸殊注釋語句,這是Unix下通用的方法。值得注意的是注釋語句,#后面表示注釋。和bash一樣。注釋語句t 類(class),函數(shù)(function),模塊(module)等等都是對(duì)象?!白帧? +2?1-0?/3%模1幕o 輯表達(dá)式1==1.0是真值。注意,浮點(diǎn)數(shù)的運(yùn)算是有誤差的。用千科學(xué)計(jì)算的時(shí)候,需要 NoneNone是一個(gè)寸殊的常量,表示出錯(cuò)。t Python中沒有boolean類型。就像C語言中,除了0以外,其他都是真。但是Python的“假”None,0,0.0,""(空字符串),[](空list),()(空tuple),{}(空Python >>>def print"debug: return>>>def print"debug: return>>>ifgetTrue()and print... printdebug: #debug:false #如果getTrue返回真,那么運(yùn)行g(shù)etFalse >>>ifgetFalse()and print... printdebug: #先運(yùn)行 #如果getFalse返回假,那么就不運(yùn)行值得注意的是and和or,對(duì)千and來說,例如expr1andexpr,如果expr1是邏輯假,么就總的表達(dá)式直接返回expr1,也許是空字符串,或者空lis,而不再計(jì)算expr2,也就是說expr2中如果有函數(shù)調(diào)用的話,也不會(huì)執(zhí)行。如果expr1是邏輯真,那么才會(huì)計(jì)算expr2,整個(gè)邏輯表達(dá)式就返回expr2。對(duì)千or來說,例如expr1orexpr2,如果expr1是邏輯真,那么就總的表達(dá)式直接返回expr1,而不再計(jì)算expr2,也就是說expr2中如果有函數(shù)調(diào)用的話,也不會(huì)執(zhí)行。如果expr1是邏輯假,那么才會(huì)計(jì)算expr2,整個(gè)邏輯表達(dá)式就返回expr2。這樣就有一種常用的寸殊表達(dá)方式:§1.3§1.3\h\hPython--Python介 \h\hPython<cond>and<expr_true>or他有一個(gè)很有用的語義是:如果cond成立,那么返回expr_true,否則返回expr_false他沒有違反什么規(guī)則,只是從左到右依次。讓我們來檢查一下為什么真真假假真假真真假假假真頭一組說明了,如果cond是真,那么整個(gè)表達(dá)式就是第二組說明了,如果cond是假,那么整個(gè)表達(dá)式就是最后一組說明了,我說謊了。記住如果expr_true有可2是假的時(shí)候,不要這么做,因?yàn)橛锌?打破原來的語義,cond是真的時(shí)候,整個(gè)表達(dá)式卻是expr_false。解決這個(gè)問題的辦法就是:(<cond>and(<expr_true>,)or最外面的括號(hào)把整個(gè)表達(dá)式括起來,改變計(jì)算優(yōu)先級(jí),否則[0]的優(yōu)先級(jí)最高。中間的括號(hào)和逗號(hào),是一個(gè)tuple的表達(dá)式。這樣(<expr_true>,永遠(yuǎn)是真,因?yàn)樗呛幸粋€(gè)元素的tupl,最后的[0]表示提取出這個(gè)元素來。幸運(yùn)的是,通常這個(gè)表達(dá)式是用t比較簡單的情況下,簡單的賦值語句,expr_true和expr_false一般都是常量,而且是真。>>>x=condand"OK"or>>>x>>>cond=>>>x=condand"OK"or>>>x<cond>or<expr_false>and為他不符合習(xí)慣。編程語言和自然語言有類似的地方,就象我們平時(shí)會(huì)說,“走,吃飯去但是我們不會(huì)說,“走,進(jìn)餐去”,或者“走,進(jìn)食了”合習(xí)慣。那就會(huì)問,為什么不合習(xí)慣,習(xí)慣從哪里來?原因是從C語言中來。Ccond?true_expr:這是一個(gè)三元操作符,眾多的C 列表list類似千C++中的ector,C[31,28,31,30,31,30,31,31,30,31,30,31[’January’,’February’,’March’,’April’,’June’,’July’,’August’,’September’,’October’,’November’,’December’][’Monday’,’Tuesday’,’Wednesday’,’Thursday’,’Friday’,’Saturday’,’Sunday’] 用[]括起來,表示一個(gè)list list的下標(biāo)和子list的下標(biāo)從0開始,和C--01>>>§1.4§1.4列表\h\hPython--Python介 \h\hPython>>>i=->>>whilei< print -0-1-2-3-4-5-600112233445566>>>a[-Traceback(mostrecentcalllast):File"<stdin>",line1,in?IndexError:listindexoutof>>>Traceback(mostrecentcalllast):File"<stdin>",line1,in?IndexError:listindexoutof 子list可通過下標(biāo)指定范圍,用千提取出一個(gè)lis的一部分。下標(biāo)表明位置,一個(gè)起始位置,一個(gè)結(jié)束位置,中間用冒號(hào)分隔。如果不指定起始位置,起始位置是0,置,結(jié)束位置是。子list表示包括起始位置處的元素,一致到結(jié)束位置,但是不包括結(jié)束位置的元素。>>>2,1,5,2,1,1,5,>>>a[1:-[1,2,3,4,得到的子list是原來list的一個(gè)拷貝,一個(gè)副本,改變子list不會(huì)改變?cè)瓉淼膌ist 處理listL.append(var)>>>>>>>>>[0,1,2,3,4,5,L.count(var)計(jì)算vartL>>>>>>a.count(2)>>>a.count(3)len(L)返回L>>>>>>len(a)L.extend(list),將list追加tL>>>>>>>>>[1,2,3,4,5,L.index(var)返回artL>>>>>>a.index(4)>>>Traceback(mostrecentcalllast):File"<stdin>",line1,in?ValueError:list.index(x):xnotinL.insert(index,var)tindex處,插入a,其余元素向后推。如果index大千list長度,就t最后添加。如果index小千0,就t>>>>>>>>>[1,1,>>>>>>[1,1,2,>>>>>>[1,1,3,2,L.pop()返回最后一個(gè)元素,并且刪除最后一個(gè)元素。L.pop(index)返回index>>>>>>a.pop()>>>a.pop(0)>>>a[1,L.remove(var)找到var>>>>>>>>>[’b’,’a’,’c’,’a’,>>>>>>[’b’,’c’,’a’,L.reverse()將L>>>>>>>>>[5,4,3,2,L.sort(),將a排序,a然你都不確定list中的元素的類型是否一樣,你還要排序,那么你期待是什么結(jié)果>>>>>>[1,2,3,4,>>>>>>>>>[1,2,’abc’,L.sort(func),將用func作為比較函數(shù),將排序。func(x,y),返回1,,1示小千,等千, 用list>>>>>>a.append(0)#>>>>>>>>>[0,1,>>>a.pop() >>>a.pop()>>>a.pop()>>>a.insert(-1,0)#>>>a.insert(->>>a.insert(->>>[2,1,>>>a.pop() >>>a.pop()>>>a.pop()>>>>>>>>>>>>>>>[0,1,2,>>>a.pop(0)>>>a.pop(0)>>>a.pop(0)>>>a.pop(0)>>>>>>>>>>>>>>>>>>>>>>>>[[[0,1],[2,3]],[[4,5],[6, list
[<expr1>forkinLif<expr2>forkinL:if<expr2>:returnList.append(<expr1>)returnreturnList;返回一個(gè)list,list的元素由每一個(gè)expr1組成,if>>>>>>[k.center(9)forkina ’, ’, ’, ’, #得到a>>>[k.upper()forkinaifk.isalpha()]#得到a>>>[k.lower()forkinaifk.isupper()]#得到a>>>[int(k)forkinaifk.isdigit()][123,456]過濾(filter,和映射(mapping)盡管這個(gè)用法很簡單,但是卻十分有用,程序變得簡m,§1.5§1.5字符串\h\hPython--Python介 \h\hPython合自然語言中的習(xí)慣。例如:上面的例子中,有一個(gè)表示“把list中的每個(gè)字符串中的字符變成大寫”。但是如果用循環(huán)語句表示就是:“創(chuàng)建一個(gè)空list,對(duì)千list中的每一個(gè)元素,把[k+1forkinlist]list[kforkinlistif把list[k+1forkinlistiftype(k)==types.IntType 字符串 有一些字符是無法用鍵盤輸入的,所以用字符組合表示寸殊字符。如表1.5-1這是和C語言十分類似的,還有echo命令,Java"abc"表示bf,注意和"abc"+"def"是有區(qū)別的,帶+的表示兩個(gè)字符串連接到一起,thisisaveryverylongstring.Anditcontainsalotline.itissuitabletowritedocumentoffunction.無用千連接多個(gè)短行,構(gòu)成一個(gè)長行\(zhòng)’"ASCIIASCIIASCIIASCIIUnicodeASCIIUnicodehh功float("1e-22 >>>"Hello"+""+"World"’HelloWorld’>>>"thisistest".capitalize()#’Thisis>>>"THISISTEST".capitalize()’Thisistest’>>>"THISIS ’thisis>>>"thisistest".upper() ’THISISTEST’>>>"ThisIsTest".swapcase() ’tHISiStEST’>>>len("HelloWorld")可以把一個(gè)字符串看成一個(gè)含有很多字符的list,這樣可以用和list>>>str="Hello>>>>>>i=->>>whilei< print -H-e-l-l-o0H1e2l3l4o缺省上屈為-1,下界為0>>>>>>str[:]>>>>>>str[1:->>>str[-1:2]負(fù)下界只是代表位置,不代表大小。所以從這個(gè)意義上講,1要比2大。str[-1:2]是空>>>>>>>>> #改變>>> #>>> Traceback(mostrecentcalllast):File"<stdin>",line1,in?TypeError:objectdoesn’tsupportitem表1.5-3中的方法可以判斷字符串中是否符合某些條件。字符串滿足條件,就返回,則,返回0所有字符都是數(shù)字0123456789或者字母A-Z,a-所有字符都是字母a-z或者A-Z所有字符都是大寫字母A-所有單詞都是首字母大寫,像個(gè)title所有字符都是空白字符\n,\t,\r,’s.find(substring,[start[,end]])如果找到,返回索引值,表明是t哪最先找的。如果找不到,返回#ok后面的abc,a的開頭位置為>>>"okabcabcabc".find("abc")#從位置4以后開始查找。相當(dāng)千>>>"okabcabcabc".find("abc",4)#相當(dāng)千>>>"okabcabc-#相當(dāng)千>>>"okabcabcabc".find("abc",4,10)s.rfind(substring,[start[,end]])和find()類似,>>>"okabcabcabc".rfind("abc")s.index(substring,[start[,end]]和find()類似,但是如果找不的substring,產(chǎn)生一個(gè)ValueError的異常。兩種方式的不同t>>>"okabcabcabc".index("abc")>>>"okabcabcabc".index("abcd")Traceback(mostrecentcallFile"<stdin>",line1,inValueError:substringnotfoundins.rindex(substring,[start和s.index()類似。不同之處ts.count(substring,[start[,end]])返回找到substring>>>"okabcabcabc".count("abc")基本用法是s%<tuple>,tuple表示一個(gè)參數(shù)列表,類似千C語言中把tuple中的每一個(gè)值用字符串表示,表示的格式由s>>>print"%s’sheightisCharles’sheightis注意到%s,%d和C語言中的printf是類似的,術(shù)語叫做conversionp轉(zhuǎn)換定義%[<mappingkey>][<conversionflag>][<Minimumfieldwidth>]|[<precision>][<lenghtmodifier>]<conversiontype>|看著很復(fù)雜,其實(shí)只要一個(gè)%接一個(gè)conversiontype就可以了。其他的都是可選的。conversiontype如下d>>>"%dand%d"%(--1andi同o>>>"%oand%o"%20andu>>>"%uand%u" ’4294967286and10’注意?10被解釋成為無符號(hào)的數(shù)時(shí)候,表示一個(gè)很大的正數(shù)。這是因?yàn)閠計(jì)算機(jī)中用x表示無符號(hào)十六進(jìn)制(小寫>>>"%xand%x"%’64and’64ande浮點(diǎn)數(shù),科學(xué)表達(dá)式法(小寫>>>"%eand%e"%(-100,200)E浮點(diǎn)數(shù),科學(xué)表達(dá)式法(大寫>>>"%Eand%E"%(-100,200)f>>>"%fand%f"%(-0.00001,200.0)’-0.000010and200.000000’g表示浮點(diǎn)數(shù),如果是小千0.0001或者不夠精度,>>>"%gand%g"%(-’-1e-05andc把ASCII>>>"%cand’Cand可用千變整數(shù)為ASCIIr表示一個(gè)字符串,這個(gè)字符串使用repr()>>>"{’two’:2,’one’:和printexpr(obj)s表示一個(gè)字符串,這個(gè)字符串使用str()>>>"{’two’:2,’one’:和printstr(obj)注意str和expr函數(shù)的不同。str是得到一個(gè)對(duì)象的非正式的描述。expr個(gè)字符串,是一個(gè)合法的Pythonmappingkey的作用是用dictionary代替tuple,用mappingkey作為key示dictionar中變量。這樣帶來的好處是,提高了程序的可讀性,%d和%(height)比較,后者的可讀性要好。而且,同樣的一個(gè)變量出現(xiàn)兩次以上,ttupl中就要寫兩次,而且要注意tupl中元素的順序和個(gè)數(shù)不要錯(cuò),用mappingkey的方式就好多了。>>>print"%s’sheightis%dcm,%s’sweightis%dkg"%...Charles’sheightis170cm,Charles’sweightis70>>>print"%(name)s’sheightis%(height)dcm" ",%(name)s’sweightis%(weight)dkg"% Charles’sheightis170cm,Charles’sweightis70name出現(xiàn)兩次,tmappingkey中,就不用寫兩次,而且參數(shù)的順序也可以隨便寫。和locals()函數(shù)相配合,會(huì)有更好的效果,locals()返回localnamespace局部命名空間),是一個(gè)dictionary,其中key是變量的名稱,value是變量的值。globals()返回globalnamespace(全局命名空間)這里只舉個(gè)例子。t后面的namespace(命名空間)>>>def print"ais%(a)d,bis%(b)d">>>ais1,bisminimumfieldwidth>>>print precision用來表示精度,只對(duì)浮點(diǎn)數(shù)有作用,帶有四舍五入的功2 conversionflag是對(duì)某些類型起作用。#表示用alternate,如果是8進(jìn)制,那么就前面加,如果是十六進(jìn)制就t前面加0x或者0X0表示用0補(bǔ)全,使之滿足minimumfieldwidth>>>print"%010d,%010d"%(1,2)-表示左對(duì)齊,如果和0同時(shí)使用那么0>>>print"%-010d,%- u,一個(gè)空格,表示0和正數(shù)前面加個(gè)空格,負(fù)數(shù)前面加->>>print"%10d,%10d,%10d"%(-1,2,-- 表示顯示符號(hào),正數(shù)顯示+,負(fù)數(shù)顯示>>>print"%+10d,%+10d,%+10d"%(-- lenghtmodifiers.ljust(width)左對(duì)齊如果s長度沒有width那么長,就t后面補(bǔ)空格,>>>"HelloWorld".ljust(1)’HelloWorld’>>>"HelloWorld".ljust(12)’HelloWorld’>>>"HelloWorld".ljust(16)’HelloWorld s.rjust(width)>>>"HelloWorld".rjust(16) HelloWorld’>>>"HelloWorld".rjust(1)’HelloWorld’s.center(width)居中類似,t兩頭補(bǔ)空格,使s的長度為width,如果s比width>>>"HelloWorld".center(1)’HelloWorld’>>>"HelloWorld".center(16) HelloWorld 去掉空白字符s.lstrip()去掉左邊的空白字符s.rstrip()去掉右邊的空白字符s.lstrip()>>>"\ta >>>"\t ’>>>"\ta 新版的python2.2.3中增加了一個(gè)可選參數(shù)chars,表示刪除出現(xiàn)tchars版的s.strip相當(dāng)千s.strip("\t\n\r")s.join(words),words是一個(gè)只含有字符串的tuple或者list。join用s作為分隔符將words>>>"\n".join(["Hello","World","Python","Said"])>>>print"\n".join(["Hello","World","Python","Said"])s.split(words),words是一個(gè)字符串,表示分隔符。split的操作和join相反。將用s>>>"Thisisabook".split("")[’This’,’is’,’a’,’book’] 元組記住以下規(guī)則,基本上就可以掌握tupletuple是常量list。tuple不2po,reme,insertuple用()表示,如a=(,,2,,4,>>>>>>print1>>>>>>>>>print1§1.7§1.7序列\(zhòng)h\hPython--Python介 \h\hPython>>>>>>print>>>表示只含有一個(gè)元素的tuple的方法是:(,)tuple比list的性2好,也就是說,不用提供動(dòng)態(tài)內(nèi)存管理的功2 序列sequence包括string,list,tuplein判斷某個(gè)object是不是t一個(gè)sequence>>>>>>>>>ifxinl:print"xisinxisin>>>>>>if"a"instr:print"ok>>>if2inT:print通過帶冒號(hào)的下標(biāo)取子+用*表示重復(fù)一個(gè)sequence,"a"*3表示aaa,(1,2)*3表示 字典dictionary是一個(gè)無序存儲(chǔ)結(jié)構(gòu)。每一元素是一個(gè)pai,包括key和value兩個(gè)部分。key的類型是integer或者string1。value的類型隨便什么都可以。dictionary中沒有重復(fù)的key。dictionary中的每一個(gè)元素是一個(gè)tuple,tuple中有兩個(gè)元素,這個(gè)tuple叫pai,pai中前面的是ey,后面的value??梢杂肈[key]的方式得到value。1或者任何同時(shí)含有hash和cmp #創(chuàng)建一個(gè)簡單的dictionary使用{}#每個(gè)pair用逗號(hào)分隔,pair中的keyt前,valuet>>>pricelist={"clock":12,"table":100,"xiao":100#dictionaryvaluekey>>>pricelist["clock"]>>>del>>>{’table’:100,’xiao’:#dict(L)#tuple中有兩個(gè)元素,前面的是key,后面的value。>>>>>>{’table’:100,’xiao’:100,’clock’:>>>pricelist=dict([(x,10*x)forxin>>>{1:10,2:20,3:#若對(duì)一個(gè)不存t的key做賦值操作,則增加一個(gè)pair>>> #>>>{’table’:100,’apple’:12,’xiao’:100,’clock’:12}>>>Traceback(mostrecentcalllast):File"<stdin>",line1,in?KeyError: dictionary假設(shè)>>>>>>§1.8§1.8字典\h\hPython--Python介 \h\hPython得到一個(gè)dictionary>>>{’four’:4,’three’:3,’two’:2,’one’:>>>>>>{’four’:4,’one’:1,’three’:3,’two’:>>>>>>{’four’:5,’one’:1,’three’:3,’two’:>>>{’four’:4,’three’:3,’two’:2,’one’:>>>>>>>>>{’four’:5,’three’:3,’two’:2,’one’:>>>{’four’:5,’three’:3,’two’:2,’one’:得到拷貝。從上面的例子可以看到,如果直接賦值c=a,那么c和a一樣,修改c影響a。但是如果b=a.copy(),那么b是獨(dú)立的,改b不會(huì)影響a若D中有ey,那么返回D[ey],否則返回>>>{’four’:4,’three’:3,’two’:2,’one’:>>>printa.get("abc")>>>printa.get("four")>>>printa.get("abc",100)D.get(key,default)和D.get(key)的不同t千,若無,則返回default,而不是。D.get(key)相當(dāng)千D.get(key,None)用千判斷D中是否含有key,相當(dāng)千keyinD.keys()>>>{’four’:4,’three’:3,’two’:2,’one’:>>>printa.has_key("one")>>>printa.has_key("abc")得到一個(gè)list,其中的每個(gè)元素是一個(gè)含有兩個(gè)元素的tuple(pair),tuple中前面是>>>{’four’:4,’three’:3,’two’:2,’one’:>>>[(’four’,4),(’three’,3),(’two’,2),(’one’,D.copy()相當(dāng)千dict(D.items()),但是若欲得到副本,用copy()得到list,含有D中的所有key>>>{’four’:4,’three’:3,’two’:2,’one’:>>>[’four’,’three’,’two’,a.copy()還可以寫成dict([(k,a[k])forkina.keys()])>>>dict([(k,a[k])forkin{’four’:4,’one’:1,’three’:3,’two’:當(dāng)然,如果僅僅是為了copy,不要這么干,用a.copy()得到list,含有D中的所有value>>>{’four’:4,’three’:3,’two’:2,’one’:>>>a.values()[4,3,2,1]§1.9§1.9\h\hPython--Python介 \h\hPythonforkin>>>{’four’:4,’three’:3,’two’:2,’one’:>>>>>>{’five’:5,’three’:>>>>>>{’four’:4,’five’:5,’one’:1,’three’:3,’two’:2}這種方法可以用來從一個(gè)dictionary向另一個(gè)dictionary賦值。得到一個(gè)pai,并且刪除他。若D>>>printa.popitem()(’four’,4)>>>printa.popitem()(’three’,3)>>>printa.popitem()(’two’,2)>>>printa.popitem()(’one’,1)>>>printTraceback(mostrecentcalllast):File"<stdin>",line1,in?KeyError:popitem():dictionaryis if if<statement-if<statement-ifelif<expr2>:elif<expr3>:<statement-<statement-if后面的表達(dá)式可以是任何表達(dá)式,除了None,0,""空字符串),[](空空dictionary)()(空tuple)若是一行的簡單表達(dá)式,可以直接跟t若是多行的表達(dá)式,就要用縮進(jìn)的方式,表示一組語句。tPytho中沒有ascal中的begin...end,或者C語言中的{}來表示一組語句的開始和結(jié)束。Pytho認(rèn)為同樣縮進(jìn)長度的語句是一組。這是一個(gè)仁者見仁的事情。好處就是,提高了可讀性任何人編寫的程序都是類似的,不像C中有各種各樣的風(fēng)格,有的把“{”緊接tif后面,有的則另起一行。不好的地方就是,這是個(gè)新點(diǎn)子,很多人都不習(xí)慣,人們一向認(rèn)為編程語言中空白字符不應(yīng)該是語法的一部分。而且有的編輯器不2分別tab和(或8)個(gè)空格的區(qū)別,就會(huì)有一些莫名其妙的語法錯(cuò)誤。Python中好像沒有switch語句,elif用來完成這個(gè)功2else>>>if2個(gè)人認(rèn)為如果有switch print"xis...elif print"xis...elifx< print"xis... print"xisnota 循環(huán)結(jié)構(gòu)forwhilebreakcontinueforforxin<else-sequence表示任何>>>forxin"abc":print>>>forxin[1,2,3]:print23>>>>>>forxinD:printD[three]=3D[two]=2D[one]=1break語句可以強(qiáng)行退出循環(huán),和Celse是可有可無的。若有,則表示如果每個(gè)a中的元素都循環(huán)到了(沒有break)就執(zhí)行else-block。這一點(diǎn)很好,因?yàn)槲襱Cif(a[i]==100)break;}if(i==len){/*100not/*do}而tPython>>>[1,2,3,>>>forxin ifx==100:... print"100not100notelse語句可以理解為:如果循環(huán)沒有被break語句強(qiáng)行中斷,或者說循環(huán)正常結(jié)束后,就會(huì)執(zhí)行else中的語句。這還是生硬的語法描述,語義描述會(huì)更加清楚,例如上面的例子,意思是說如果ta中找不到10,那么就會(huì)執(zhí)行else中的語句。語義t各個(gè)上下文的情況下會(huì)有所不同。一般情況下,brea都會(huì)t一個(gè)if語句后面3,else是表示,如果那個(gè)if語句t循環(huán)中從來都沒有成立過,就會(huì)執(zhí)行else中的語句。上面的例子中,if的條件是x==100,那么如果a中任意元素x,都有notx==100,那么else中的語句就會(huì)執(zhí)行。修改x并不2夠修改xta>>>>>>forxin >>>x>>>[1,2,3,注意,是不2修改xta中對(duì)應(yīng)的內(nèi)容,如果是Dictionary,那么沒有修改x修改Dictionary中的內(nèi)容。看過namespace>>>>>>forxin D[x]+=>>>{’three’:4,’two’:3,’one’:若要修改,就用range()函數(shù)。range([start,]stop,[,step]),表示從start到stop結(jié)束,每步增加step,start缺省為,ste缺省為1,返回一個(gè)list>>>[0,1,2,3,4,5,6,7,8,>>>[1,2,3,4,5,6,7,8,>>>range(1,10,2)[1,3,5,7,9]>>>range(1,10,-1)若可2產(chǎn)生無限個(gè)數(shù),那么是空list利用range()函數(shù)修改>>>[1,2,3,>>>forxin >>>[3,4,5,while<expr1>:<else-這個(gè)循環(huán)的意思是,只要expr1是真,那么就一直執(zhí)行block中的語句。如果>>>>>>whilei< printi;12>>>whilei< printi;i=i... printi,"is12iis千萬別忘了i=i+1, def<function_name>(<parameters_list><codefunction_nameparameters_list是參數(shù)列表。參數(shù)也沒有類型,可以傳遞任何類型的值給函數(shù),由函數(shù)的內(nèi)容定義函數(shù)的接口,如果傳遞的參數(shù)的類型不是函數(shù)想要的,那么函數(shù)可以拋出異常。codeblock是和if,while\h\hPython--Python介 \h\hPython函數(shù)沒有返回值類型,return>>>def return>>>printadd(1,2)>>>print
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項(xiàng)11 古詩文閱讀(試卷版)
- 人教版《美術(shù)》二年級(jí)上冊(cè)第8課《對(duì)印的圖形》教案
- 應(yīng)急聯(lián)動(dòng)指揮中心設(shè)計(jì)方案
- 管理會(huì)計(jì)試卷及答案 共2套
- 5.2 生活中的透鏡 說課稿2025年初中人教版物理八年級(jí)上冊(cè)
- 暑期敬老院社會(huì)實(shí)踐報(bào)告
- 雙十一文胸店活動(dòng)策劃
- 二零二五年度北京市旅店智能化客房租賃合同
- 人力資源居間合同
- 2025年度北京市健康產(chǎn)業(yè)員工勞動(dòng)合同參考
- 2024年皖西衛(wèi)生職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- 2023屆高考模擬作文“完美與缺陷”導(dǎo)寫及范文
- TGIA 004-2020 垃圾填埋場地下水污染防治技術(shù)指南
- GB/T 22576.7-2021醫(yī)學(xué)實(shí)驗(yàn)室質(zhì)量和能力的要求第7部分:輸血醫(yī)學(xué)領(lǐng)域的要求
- GB/T 16475-2008變形鋁及鋁合金狀態(tài)代號(hào)
- 《男生女生》優(yōu)秀課件(共21張PPT)
- 《農(nóng)業(yè)保險(xiǎn)學(xué)》第7章畜牧保險(xiǎn)
- 《服飾手工藝欣賞》課件
- 合同的訂立課件
- 結(jié)直腸癌醫(yī)學(xué)課件全面版
- 發(fā)電機(jī)保養(yǎng)檢查記錄表
評(píng)論
0/150
提交評(píng)論