系列4python之詳細(xì)初學(xué)者教程講義2主要特性_第1頁
系列4python之詳細(xì)初學(xué)者教程講義2主要特性_第2頁
系列4python之詳細(xì)初學(xué)者教程講義2主要特性_第3頁
系列4python之詳細(xì)初學(xué)者教程講義2主要特性_第4頁
系列4python之詳細(xì)初學(xué)者教程講義2主要特性_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Python中。閱讀本章的最好的方法就是在你的電腦上打開Python解釋器,嘗試示例,當(dāng)然你也可以隨心所欲的自己做實驗。1–4中介紹了如何啟動Python大部分讀者已經(jīng)了解二者的不同,但是不管怎樣,我們還是再來復(fù)下。語句使用關(guān)鍵字來>>>printoWorld!'oWorld!本章中分別介紹語句和表達(dá)式。我們先來研究print語句程序輸出,print語句及“o多數(shù)解釋執(zhí)行的語言,使用語句進(jìn)行輸出。很多的s語言使用echo命令來輸出程序筆記:在交互式解釋器中顯示變量通常當(dāng)你想看變量內(nèi)容時,你會在代碼中使用print語句輸出。不過在交互式解釋器中,你可以用print語句顯示變量的字符串表示,或者僅使用變量名查看該變量的原始值。myString>>>myString=o>>>printmyStringoWorld!>>>o注意:在僅用變量名時,輸出的字符串是被用單引號括起來了的。這是為了讓非字符串對串本身引號表示你剛剛輸入的變量的值是一個字符等你對Python有了較深入的了解之后,你就知道print句調(diào)用str()函數(shù)顯示對象而交互式解釋器則調(diào)用repr()函數(shù)來顯示對象。程序輸入和raw_input()內(nèi)建函>>>oPythonprint一點(diǎn)和C語言中的printf()函數(shù)非常相似:Pythonisnumber1!關(guān)于字符串格式運(yùn)算符的信息。Printimportprint>>sys.stderr,'Fatalerror:invalidinput!'importsysprint>>sys.stderr,'Fatalerror:invalidlogfile=open('/tmp/mylog.txt',print>>logfile,'Fatalerror:invalidinput!'2.2程序輸入和建函數(shù)從用戶那里得到數(shù)據(jù)輸入的最容易的方法是使用raw_input()內(nèi)建函數(shù)。它標(biāo)準(zhǔn)輸入,并將到的數(shù)據(jù)賦值給指定的變量。你可以使用int()內(nèi)建函數(shù)將用戶輸入的字符串轉(zhuǎn)換>>>user=raw_input('Enterloginname:')Enterloginname:root>>>print'Yourloginis:',userYourloginis:root>>>num=raw_input('Nowenteranumber:')Nowenteranumber:1024>>>print'Doublingyournumber:%d'%(int(num)*Doublingyournumber:筆記:從交互式解釋器中獲在學(xué)習(xí)Python的過程如果需要得到一個生疏函數(shù)的幫只需要對它調(diào)用內(nèi)建函help()。通過用函數(shù)名作為help()的參數(shù)就能得到相應(yīng)的幫助信息>>>Helponbuilt-infunctionraw_inputinmodulebuiltinraw_input([prompt])->stringCtrl+D,Windows:Ctrl+Z+回車),則EOFError,在Unix平臺,只要可用,就使用GNU(上面一行是help(raw_input)的輸出,譯文是對其加以解釋——譯者注printraw_input()內(nèi)輸出就是函數(shù)的目的,那么在函數(shù)體內(nèi)使用print語句也是可以接受的選擇。注>>>#one...printoWorld!' #anothercommentoWorld!起到文檔的功能,這是Java程序員非常熟悉的一個特性。defreturnTrue運(yùn)算 (數(shù)字)學(xué)到有關(guān)傳統(tǒng)除法、真正的除法及浮點(diǎn)除法的知識還有一個乘方運(yùn)算符,雙星號(**)。盡管強(qiáng)調(diào)這些運(yùn)算符的算術(shù)本質(zhì),但是請>>>print-2*4+3**就象你看到的,運(yùn)算符的優(yōu)先級和你一樣:+和-優(yōu)先級最低,*,/,//,%是(-2*4),然后是對兩個結(jié)果進(jìn)行求和。<<=>>===!=>>>2<>>>2==>>>2>>>>6>>>>>>格。目前后者慢慢地被淘汰了,所以我們推薦使用前者。 >>>2<4and2==>>>2>4or2<>>>not6.2<=>>>3<4<Python支持這樣的表達(dá)式,既簡潔又優(yōu)>>>3<4and4<風(fēng)格:合理使用括號增強(qiáng)代碼的可讀性,在很多場合使用括號都是一個好主意,而沒Python語言中不是必須存在的,不過為了可讀性,使用括號總是值得的。任何你代碼的人會感謝你,在你再次閱讀自己的代碼時,你也會感謝你自己。變量和賦PythonC(或者說這門語言本或小寫字母,另外還包括下劃線(_).其它的字符可以是數(shù)字,字母,或下劃線。Python變量名是大小寫敏感的,也就是說變量"cAsE"與"CaSe"是兩個不同的變量。>>>counter=>>>=>>>name=>>>print'%fisthesameas%fkm'%,kilometers)1000.000000isthesameas1609.000000kmn=n*n*=PythonC11Python會將--n解釋為-(-n)從而得到n,同樣++n的結(jié)果也是數(shù)intlongboolfloatPythonPythonPython與C語言的長整數(shù)Python的長整數(shù)所能表達(dá)的范圍遠(yuǎn)遠(yuǎn)超過C語言的長整數(shù),事實上,PythonJava,Python于Java中的BigInteger類型。從長遠(yuǎn)來看,Python2.3整型溢出錯誤,結(jié)果會自動的被轉(zhuǎn)換為長整數(shù)。在未來版本的Python中,兩種整數(shù)類型將會無縫結(jié)合,長整數(shù)后綴“L”也會變得可有可無。TrueFalse個數(shù)值上下文環(huán)境中(True),True1,F(xiàn)alse0(包括-1)在其它語言中通常不被直接其實還有第六種數(shù)字類型,decimal,用于十進(jìn)制浮點(diǎn)數(shù)。不過它并不是內(nèi)建類型,你必須先導(dǎo)入decimal模塊才可以使用這種數(shù)值類型。由于需求日漸強(qiáng)烈,Python2.4了這種類型。舉例來說,1.1無法用二進(jìn)制浮點(diǎn)數(shù)精確表示。因此,數(shù)字1.1實際上會被表示成:>>>>>>printdecimal.Decimal('1.1')字符三引號(三個連續(xù)的單引號或者雙引號)0,最后一個字符的索引是-1*>>>pystr=>>>iscool='is>>>pystr[0]>>>pystr[2:5]>>>iscool[:2]>>>iscool[3:]>>>iscool[-1]>>>pystr+iscool'Pythoniscool!'>>>pystr+''+iscool'Pythoniscool!'>>>pystr*2>>>'-'* >>>pystr=...is>>>pystr'python\niscool'is列表和元可以將列表和元組當(dāng)成普通的“數(shù)組”,它能保存任意數(shù)量任意類型的Python對象。和數(shù)組一樣,通過從0開始的數(shù)字索引元素,但是列表和元組可以不同類型的對象。列表和元組有幾處重要的區(qū)別。列表元素用中括號([])包裹,元素的個數(shù)及元素的值可>>>aList=[1,2,3,>>>aList[1,2,3,>>>aList[0]>>>aList[2:][3,4]>>>aList[:3][1,2,3]>>>aList[1]=>>>aList[1,5,3,4]元組也可以進(jìn)行切片運(yùn)算,得到的結(jié)果也是元組(不能被修改>>>aTuple=('robots',77,93,>>>('robots',77,93,>>>aTuple[:3]('robots',77,93)>>>aTuple[1]=5Traceback(innermostlast):File"<stdin>",line1,inTypeError:objectdoesn'tsupportitem字>>>aDict={'host':'earth'}#create>>>aDict['port']=80#addto>>>{'host':'earth','port':>>>aDict.keys()['host',>>>aDict['host']>>>forkeyin...printkey,port80代碼塊及縮進(jìn)對(不用大括號?到底成不成???)pythonif語if0True,if_suiteifx<print'”x”mustbeatleastPythonelseifPythonelif(“else-if”)ifelifexpression2:Python物”。這個例子似乎有點(diǎn)奇怪、讓人覺得困惑,但是因為有了Python干凈的語法,if-elif-else語句并不象別人說的那么(以致不能讓人接受)。如果你非要避免寫一堆if-elif-elsefor(2.13)來迭代你可能的在第8章你可以學(xué)到有關(guān)if,elif,else條件語句的知識while循whilewhile_suite0False;>>>counter=>>>whilecounter<...print'loop#%d'%...counter+=1loop#0looploopforrange()內(nèi)建>>>print'IliketousetheInternetfor:'IliketousetheInternetfor:>>>foritemin['e-mail','net-surfing',',...printe-符。只要在print語句的最后添加一個逗號(,),就可以改變它這種行為。foritemin['e-mail','net-surfing',',print否則,提示信息就會立刻出現(xiàn)在我們的輸出之后。下面是以上代碼的輸出:IliketousetheInternete-mailnet-surfing為了輸出清晰美觀,帶逗號的print語句輸出的元間會自動添加一個空格。通過指定輸出格式,程序員可以最大程度的控制輸出布局,也不用擔(dān)心這些自動添加的空格。它也可以>>>who=>>>what=WearetheknightswhosayNi!Ni!Ni!Ni!>>>print'Wearethe%swhosay%s'% (who,((what+'')*通過演示一個讓Pythonfor循環(huán)更象傳統(tǒng)循環(huán)(換言之,計數(shù)循環(huán))的示例,我們來結(jié)束對循環(huán)的介紹。因為我們不能改變for循環(huán)的行為(迭代一個序列),我們可以生成一>>>foreachNumin[0,1, print12能滿足我們的需要,接受一個數(shù)值范圍,生成一個列表。>>>foreachNumin print012>>>foo=>>>forcin printa>>>foo=>>>foriin...printfoo[i],'(%d)'%abc函數(shù)的推出(Python2.3)>>>fori,chin...printch,'(%d)'%abc 列表解>>>squared=[x**2forxin>>>foriin149>>>sqdEvens=[x**2forxinrange(8)ifnotx%>>>foriin4文件和內(nèi)建函數(shù)open()、在你已經(jīng)習(xí)慣一門語言的語法之后,文件是相當(dāng)重要的一環(huán)。在一些工作做完之后,將它保存到持久是很重要的。如何打開handle=open(file_name,access_mode=file_name變量包含我們希望打開的文件的字符串名字,access_mode中'r'表示,'w'表示寫入,'a'表示添加。其它可能用到的標(biāo)聲還有'+'表示讀寫,'b'表示二進(jìn)制訪access_moder'open()以它的一些方法,比如readlines()和close().文件對象的方法屬性也必須通過句點(diǎn)屬性標(biāo)識法(參閱下面的筆記)筆記:什么是屬和方法。哪些對象擁有屬性呢?很多。類,模塊,文件還有復(fù)數(shù)等等對象都擁有屬性。我如何對象屬性?使用句點(diǎn)屬性標(biāo)識法。也就是說在對象名和屬性名之間加一個句點(diǎn):object.attributefilename=raw_input('Enterfilename:')fobj=open(filename,'r')foreachLinein然后關(guān)閉文件,再迭代每一行輸出。這樣寫代碼的好處是能夠快速完整的文件。內(nèi)容輸出和文件不必交替進(jìn)行。這樣代碼更清晰,而且將不相關(guān)的任務(wù)區(qū)分開來。需要注意的一點(diǎn)是文件的大小。上面的代碼適用于文件大小適中的文件。對于很大的文件來說,上面的代碼會占用太多的內(nèi)存,這時你最好一次讀一行。(下一節(jié)有一個好例子)printprintfile()Pythonopen(),file()這個名字可以更確切的表明它是一個工廠函數(shù)。(生成文件對象)int()生成整數(shù)對象,本地文件系統(tǒng)。請參考第9了解詳細(xì)信息。錯誤和異Python解釋器就一個異常,并顯示異常的詳細(xì)信息。程序員可以根據(jù)這些信息迅速定位問題并進(jìn)行調(diào)試,并找出處理錯誤的辦法。exceptfilename=raw_input('Enterfilename:')fobj=open(filename,'r')foreachLineinprinteachLine,fobj.close()exceptIOError,e:print'fileopenerror:',函果函數(shù)中沒有return語句,就會自動返回None對象。只有可變對象會受此影響,對不可變對象來說,它的行為類似按值調(diào)用。如何定義def"optionalationstring"定義一個函數(shù)的語法由def關(guān)鍵字及緊隨其后的函數(shù)名再加上該函數(shù)需要的幾個參數(shù)組成。函數(shù)參數(shù)(arguments的原因。(在你的代碼里千萬別寫上中括號!)這個語句由一個冒號(:)結(jié)束(與if和while語句的結(jié)束方式一樣),之后是代表函數(shù)體的代碼組,下面是一個簡短的例子:def'apply+operationtoargument'return(x+x)這個函數(shù),干的是“在我的值 ”的活。它接受一個對象,將它的值加到自身,>>>addMe2Me(4.25)>>>addMe2Me(10)>>>addMe2Me('Python')>>>addMe2Me([-1,[-1,'abc',-1,默認(rèn)參函數(shù)的參數(shù)可以有一個默認(rèn)值,如果提供有默認(rèn)值,在函數(shù)定義中,參數(shù)以賦值語句的>>>def...'determineifindebugmodewithdefault...if...print>>>>>>foo(False)debug自動拿到一個值,True.在第二次調(diào)用foo()時,我們故意傳遞一個參數(shù)False給類Python(與Java不同),此刻你也可以不學(xué)習(xí)類。不過我們還是在這兒放了些例子,以方便感的讀者瀏覽。如何定義classClassName(base_class[es]):"optionalationstring"就使用object作為基類。class行之后是可選的文檔字符串,靜態(tài)成員定義,及方法定義。class"""myveryfirstclass:FooClass"""version=0.1#class(data)attributedefinit(self,nm='JohnDoe'):=nm#classinstance(data)attributeprint'Createdaclassinstancefor',nmdef"""diyinstanceattributeandclassname"""print'Yournameis',print'Mynameis',defshowver(self):"""diyclass(static)printself.version #referencesFooClass.versiondefaddMe2Me(self,x):#doesnotuse'self'"""apply+operationtoargument"""returnx+version,init(),showname(),showver(),addMe2Me().show*()方法并沒有做什么有用的事情,僅僅輸出對應(yīng)的信息。init()方法有一個特殊名字,所有名字開始和 ()方自動執(zhí)行,在類實例創(chuàng)建完畢后執(zhí)行,類似構(gòu)建函數(shù)。init()可以被當(dāng)成構(gòu)建函數(shù),不過不象其它語言中的構(gòu)建函數(shù),它并不創(chuàng) ()方法,你可以覆蓋默認(rèn)的 類實例屬性(或者說成員)。這個變量僅在類實例中存在,它并不是實際類本身的一部分。init()需要一個默認(rèn)的參數(shù),前一節(jié)中曾經(jīng)介紹過。,你也注意到每個方法都有的一個參數(shù),self.什么是self?它是類實例自身的。其他語言通常使用一個名為this >>>foo1=CreatedaclassinstanceforJohn屏幕上顯示的字符串正是自動調(diào)用init ()就會被自動調(diào)用。不管這 >>>foo1.showname()YournameisJohnMyname

main>>>foo1.showver()>>>printfoo1.addMe2Me(5)我們顯示self.class 變量的值。對一個實例來說,這個變量表示實例化它的類的名字。(self.class實際的類)。在我們的例子里,創(chuàng)建類實例時我們并未傳遞名字參數(shù),因此默認(rèn)參數(shù)'JohnDoe'就被自動使用。在我們下一個例子里,指定一>>>foo2=FooClass('JaneSmith')CreatedaclassinstanceforJane>>>foo2.showname()MynameisFooClass模模塊可以包含可執(zhí)行代碼,函數(shù)和類或者這些東西的組合。Python.py建之后,你可以從另一個模塊中使用import語句導(dǎo)入這個模塊來使用。如何導(dǎo)入import如何一個模塊函數(shù)或一個模塊變一旦導(dǎo)入完成,一個模塊的屬性(函數(shù)和變量)可以通過熟悉的.句點(diǎn)屬性標(biāo)識法現(xiàn)在我們再次提供oWorld!例子,不過這次使用sys模塊中的輸出函數(shù)>>>import>>>sys.stdout.write(oWorld!\n')oWorld!>>>systform>>>'2.4.2(#67,Sep282005,10:51:12)[MSCv.131032bit 這些代碼的輸出與我們使用print語句完全相同。唯一的區(qū)別在于這次調(diào)用了標(biāo)準(zhǔn)輸出的write(不同于printwrite()關(guān)于模塊和導(dǎo)入,你可以在第12章中得到有用的信息。在那里會詳細(xì)介紹本章上面所有提到的,希望我們提供的快速能達(dá)到你迅速使用Python開始工作的目標(biāo)。筆記:什么是在本書中你會經(jīng)常看到PEP這個字眼。一個PEP就是一個Python增強(qiáng)提案(PythonEnhancementProposal也是在Python增加新特性的方式。初學(xué)者的角度看,它們是一些高級讀物,它們不但提供了新特性的完整描述,還有添加這些新特性的理由,如果需要的話會提供新的語法、術(shù)實現(xiàn)細(xì)節(jié)、向后兼容信息等等。在一個新特性被整合進(jìn)Python之前,必須通過Python開發(fā)社區(qū),PEP作者及實現(xiàn)者,還有Python創(chuàng)始人,Guido在PEP0中可以找到所有的PEP。PEP索引的是:. 實用的函2.1表2.1對新Python程序員有用的內(nèi)建函數(shù) 數(shù),則會進(jìn)入交互式幫助。 open(fn,mode)以mode('r'=讀,'w'=寫)方式打開一個文件名為fn start,stop1;默認(rèn)值為0,step默認(rèn)值為1raw_input(strstr 練2–1.變量,print和字符串格式化運(yùn)算符。啟動交互式解釋器。給一些變量賦值(字符串,數(shù)值等等)并通過輸入變量名顯示它們的值。再用print語句做同樣的事。這二者有何區(qū)別?也嘗試著使用字符串格式運(yùn)算符%,多做幾次,慢慢熟悉它。.P程序輸出,閱讀下面的Python1+2*4你認(rèn)為這段會輸出什么這段代碼單獨(dú)執(zhí)行和在交互解釋器中執(zhí)行有何不同?試一下,然后寫出結(jié)如何改進(jìn)這個,以便它能和你想像的一樣工作啟動交互解釋Python對兩個數(shù)值(任意類型)進(jìn)行加、減、乘、除運(yùn)算。然后使用取余運(yùn)算符來得到兩個數(shù)相除的余數(shù),最后使用乘方運(yùn)算符求A數(shù)的B次方。 使用raw_input()函數(shù)得到用戶輸創(chuàng)建一段使用raw_input()內(nèi)建函數(shù)從用戶輸入得到一個字符串,然后顯示這本,你需要使用string.ato*()函數(shù)執(zhí)行這種轉(zhuǎn)換) 循環(huán)和數(shù)分別whilefor創(chuàng)建一個循

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論