Python數(shù)據(jù)分析與實踐(第3版) 課件全套 柳毅 第1-13章 Python簡介 -金融風(fēng)險數(shù)據(jù)分析項目實踐_第1頁
Python數(shù)據(jù)分析與實踐(第3版) 課件全套 柳毅 第1-13章 Python簡介 -金融風(fēng)險數(shù)據(jù)分析項目實踐_第2頁
Python數(shù)據(jù)分析與實踐(第3版) 課件全套 柳毅 第1-13章 Python簡介 -金融風(fēng)險數(shù)據(jù)分析項目實踐_第3頁
Python數(shù)據(jù)分析與實踐(第3版) 課件全套 柳毅 第1-13章 Python簡介 -金融風(fēng)險數(shù)據(jù)分析項目實踐_第4頁
Python數(shù)據(jù)分析與實踐(第3版) 課件全套 柳毅 第1-13章 Python簡介 -金融風(fēng)險數(shù)據(jù)分析項目實踐_第5頁
已閱讀5頁,還剩1057頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python數(shù)據(jù)分析與實踐12025/11/27第一章Python簡介本章學(xué)習(xí)目標(biāo):了解python語言發(fā)展的歷史及其特點深刻了解python2和python3的區(qū)別熟練掌握python中的IDLE的編程特點熟練的掌握python的開發(fā)環(huán)境32025/11/27

Python的作者,荷蘭人GuidovonRossum。1982年,Guido從阿姆斯特丹大學(xué)獲得了數(shù)學(xué)和計算機(jī)碩士學(xué)位。然而,盡管他算得上是一位數(shù)學(xué)家,但他更加享受計算機(jī)帶來的樂趣。用他的話說,盡管擁有數(shù)學(xué)和計算機(jī)雙料碩士,他總趨向于做計算機(jī)相關(guān)的工作,并熱衷于做任何和編程相關(guān)的活兒。Python起源與發(fā)展

最初的Python完全由Guido本人開發(fā)。Python得到Guido同事的歡迎,他們迅速的反饋使用意見,并參與到Python的改進(jìn)。Guido和一些同事構(gòu)成Python的核心團(tuán)隊。他們將自己大部分的業(yè)余時間用于hackPython。隨后,Python拓展到研究所之外。Python將許多機(jī)器層面上的細(xì)節(jié)隱藏,交給編譯器處理,并凸顯出邏輯層面的編程思考。Python程序員可以花更多的時間用于思考程序的邏輯,而不是具體的實現(xiàn)細(xì)節(jié)。這一特征吸引了廣大的程序員。Python開始流行。

到今天,Python的框架已經(jīng)確立。Python語言以對象為核心組織代碼,支持多種編程范式,采用動態(tài)類型,自動進(jìn)行內(nèi)存回收。Python支持解釋運行,并能調(diào)用C庫進(jìn)行拓展。Python有強(qiáng)大的標(biāo)準(zhǔn)庫。由于標(biāo)準(zhǔn)庫的體系已經(jīng)穩(wěn)定,所以Python的生態(tài)系統(tǒng)開始拓展到第三方包。這些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,將Python升級成了物種豐富的熱帶雨林。Python崇尚優(yōu)美、清晰、簡單,是一個優(yōu)秀并廣泛使用的語言。Python在TIOBE排行榜中排行第八,它是Google的第三大開發(fā)語言,Dropbox的基礎(chǔ)語言,豆瓣的服務(wù)器語言。python語言的優(yōu)點:⑴Python非常簡單,適合閱讀。閱讀一個良好的Python程序就像是在讀英語一樣,盡管這個英語的要求非常嚴(yán)格。Python的這種偽代碼本質(zhì)是它最大的優(yōu)點之一,它使用戶能夠?qū)W⒂诮鉀Q問題而不是去搞明白語言本身。⑵易學(xué)。python雖然是用c語言寫的,但是它擯棄了c中非常復(fù)雜的指針,簡化了python的語法。⑶Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,用戶可以自由地發(fā)布這個軟件的副本、閱讀它的源代碼、對它做改動、把它的一部分用于新的自由軟件中。72025/11/27⑷可移植性:由于開源本質(zhì),Python已經(jīng)被移植在許多平臺上(經(jīng)過改動使它能夠工作在不同平臺上)。如果用戶小心地避免使用依賴于系統(tǒng)的特性,那么所有的Python程序無需修改就可以在下述任何平臺上面運行。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2以及Google基于linux開發(fā)的Android平臺!⑸Python解釋器把源代碼轉(zhuǎn)換成稱為字節(jié)碼的中間形式,然后再把它翻譯成計算機(jī)使用的機(jī)器語言并運行。因此,由于用戶不再需要擔(dān)心如何編譯程序,如何確保連接轉(zhuǎn)載正確的庫等,所有這一切使得使用Python更加簡單。82025/11/27⑹Python既支持面向過程的函數(shù)編程,也支持面向?qū)ο蟮某橄缶幊?。在面向過程的語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構(gòu)建起來的;在面向?qū)ο蟮恼Z言中,程序是由數(shù)據(jù)和功能組合而成的對象構(gòu)建起來的。與其他主要的語言(如C++和Java)相比,Python以一種非常強(qiáng)大又簡單的方式實現(xiàn)面向?qū)ο缶幊?。⑺可擴(kuò)展性和可嵌入性:如果用戶需要讓自己的一段關(guān)鍵代碼運行得更快或者希望某些算法不公開,可以把部分程序用C或C++編寫,然后在自己的Python程序中使用它們。用戶可以把Python嵌入自己的C/C++程序,從而向程序用戶提供腳本功能。9⑻Python有很龐大的標(biāo)準(zhǔn)庫。它可以幫助用戶處理各種工作,包括文檔生成、單元測試、線程、數(shù)據(jù)庫、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關(guān)的操作。記住,只要安裝了Python,所有這些功能都是可用的。除了標(biāo)準(zhǔn)庫以外,還有許多其他高質(zhì)量的庫,如wxPython、Twisted和Python圖像庫等等。102025/11/27python語言的缺點:(2)運行速度:如果有速度要求,用C++改寫關(guān)鍵部分吧。不過對于用戶而言,機(jī)器上的運行速度是可以忽略的。因為用戶根本感覺不出來這種速度的差異。(3)Python的開源性使得Python語言不能加密。(4)Python構(gòu)架選擇太多(沒有像C#這樣的官方.NET構(gòu)架,也沒有像Ruby由于歷史較短,構(gòu)架開發(fā)的相對集中)。不過這也從另一個側(cè)面說明,Python比較優(yōu)秀,吸引的人才多,項目也多。(1)在很多時候不能將Python程序連寫成一行,例如“importsys;foriinsys.path:printi”1.1.2Python2與Python3的區(qū)別1.在Python3中,print不再是語句,而是函數(shù),比如原來是print'abc'現(xiàn)在是print('abc'),但是在Python2.6以上版本可以使用from__future__importprint_function來實現(xiàn)相同的功能。2.在Python3中,沒有舊式類,只有新式類,也就是說不用再像這樣classFoobar(object):pass顯式地子類化object,但是最好還是加上“.”,主要區(qū)別在于old-style是classtype類型,而new-style是type類型。3.原來1/2(兩個整數(shù)相除)結(jié)果是0,現(xiàn)在是0.5了。python2.2+以上都可以使用from__future__importdivision實現(xiàn)改特性,同時注意“//”取代了之前的“/”運算。122025/11/274.新的字符串格式化方法format()取代%。從python2.6以上版本開始在str和unicode中有該方法,同時python3依然支持%算符5.xrange重命名為range,同時更改的還有一系列內(nèi)置函數(shù)及方法,都返回迭代器對象,而不是列表或者元組,比如filter(),map(),dict.items等6.!=取代<>:python2也很少有人用<>,所以不算什么修改。132025/11/278.long重命名為int:python3徹底廢棄了long+int(雙整數(shù))實現(xiàn)的方法,統(tǒng)一為int,支持高精度整數(shù)運算。9.“exceptException,e”變成“except(Exception)ase”:只有python2.5及以下版本不支持該語法。python2.6是支持的.不算新功能。10.exec變成函數(shù),類似print()的變化,之前是語句。142025/11/27(1)主要是類庫的變化,組織結(jié)構(gòu)變了一些,但功能沒變,例如urlparse→urllib.parse這樣的變化。(2)對bytes和原生unicode字符串的支持,刪除了unicode對象,str為原生unicode字符串,bytes代替了之前的str,這是最核心的。152025/11/271.2Python的環(huán)境搭建1、首先進(jìn)入網(wǎng)站下載:(/downloads/),進(jìn)入之后如下圖,選擇圖中紅色圈中區(qū)域進(jìn)行下載。162025/11/272、下載完成后如下圖所示172025/11/273、雙擊exe文件進(jìn)行安裝,如下圖,并按照圈中區(qū)域進(jìn)行設(shè)置,切記要勾選打鉤的框,然后再點擊Customizeinstallation進(jìn)入到下一步。184、對于上圖中,可以通過Browse進(jìn)行自定義安裝路徑,也可以直接點擊Install進(jìn)行安裝,點擊install后便可以完成安裝了。195、然后進(jìn)入高級系統(tǒng)設(shè)置,如下,點擊環(huán)境變量,然后在環(huán)境變量里系統(tǒng)變量中,找到path,選擇編輯,在變量值后面添加之前的復(fù)制的Python的位置,在這前面加上英文的分號,如下圖。206.剩下就是檢驗Python是否裝好。同時按住win鍵和R鍵,點擊確定,進(jìn)入命令行;在命令行輸入python,出現(xiàn)如下的Python相關(guān)信息,就表示裝好了Python3.5.1。211.3開始使用PythonIDLE>>>被叫做Python命令提示符(prompt),此時Python在等待你輸入代碼。你現(xiàn)在可以輸入一行Python代碼,Python就會執(zhí)行該代碼。這種模式叫做Python交互模式(interactivemode),因為Python在等待你輸入代碼,然后執(zhí)行。例如,可以輸入一個表達(dá)式,讓Python進(jìn)行計算。例如,要計算1+1,可以在命令提示符后面輸入1+1,然后按enter:>>>1+1按下enter之后,Python就會輸出計算結(jié)果,這里是2。要退出Python交互模式,可以在Python命令提示符后,輸入exit():>>>exit()也可以輸入quit():>>>quit()

1.3.1交互方式221.3開始使用PythonIDLE另外,還可以輸入一個EOF(文件尾,endoffile)字符,在Windows上是Ctrl+Z,在Linux上是Ctrl+D。對于以后的代碼,如果出現(xiàn)以>>>開頭的行,就代表這行代碼是在Python交互模式下輸入的。在Python交互模式下輸入代碼和運行.py文件是有區(qū)別的。在Python命令行,Python會等待用戶一行一行地輸入代碼;但運行.py文件時用戶沒有這個機(jī)會,而且一般運行完一個.py文件就會立即退出(這樣用戶就不能看到程序輸出了什么)。關(guān)于Python交互模式還有更多的細(xì)節(jié),這將在以后討論。1.3.2Python的集成開發(fā)環(huán)境除了官網(wǎng)中下載的python自帶的IDLE之外,還有幾款風(fēng)格功能各異的IDE(集成開發(fā)環(huán)境)。下面分別介紹。1.3.2Python的集成開發(fā)環(huán)境1.EclipsewithPyDev:/Eclipse+PyDev插件,很適合開發(fā)PythonWeb應(yīng)用,其特征包括自動代碼完成、語法高亮、代碼分析、調(diào)試器、以及內(nèi)置的交互瀏覽器。1.3.2Python的集成開發(fā)環(huán)境2.KomodoEdit:/komodo-edit/KomodoEdit是一個免費的、開源的、專業(yè)的PythonIDE,其特征是非菜單的操作方式,開發(fā)高效。1.3.2Python的集成開發(fā)環(huán)境3.Vim:/download.phpVim是一個簡潔、高效的工具,也適合做Python開發(fā)。1.3.2Python的集成開發(fā)環(huán)境4.PyCharmPyCharm是由JetBrains打造的一款PythonIDE。PyCharm具備一般PythonIDE的功能,比如:調(diào)試、語法高亮、項目管理、代碼跳轉(zhuǎn)、智能提示、自動完成、單元測試、版本控制等。另外,PyCharm還提供了一些很好的功能用于Django開發(fā),同時支持GoogleAppEngine,更酷的是,PyCharm支持IronPython。PyCharm官方下載地址:/pycharm/download/1.3.2Python的集成開發(fā)環(huán)境4.PyCharm1.3.2Python的集成開發(fā)環(huán)境5.SublinmeText1.3.2Python的集成開發(fā)環(huán)境5.SublinmeTextSublimeText具有漂亮的開發(fā)界面(見圖1.11)和強(qiáng)大的功能,例如代碼縮略圖、Python的插件和代碼段等,還可以自定義鍵綁定、菜單和工具欄。SublimeText的主要功能包括拼寫檢查、書簽、完整的PythonAPI、Goto功能、即時項目切換、多選擇、多窗口等。SublimeText是一個跨平臺的編輯器,同時支持Windows、Linux、MacOSX等操作系統(tǒng)。1.3.2Python的集成開發(fā)環(huán)境5.SublinmeText使用SublimeText2的插件擴(kuò)展功能,用戶可以輕松地打造一款不錯的PythonIDE,以下推薦幾款插件(用戶可以找到更多)。?CodeIntel:自動補全+成員/方法提示(強(qiáng)烈推薦);?SublimeREPL:用于運行和調(diào)試一些需要交互的程序;?BracketHighlighter:括號匹配及高亮顯示;?SublimeLinter:代碼pep8格式檢查。321.縮進(jìn)每級縮進(jìn)用4個空格;連續(xù)行的折疊元素應(yīng)該對齊。1.5代碼風(fēng)格2.制表符還是空格空格是最優(yōu)先的縮進(jìn)方式,當(dāng)已經(jīng)使用制表符是,應(yīng)該保持一致性,繼續(xù)使用制表符。Python3不允許混合使用制表符和空格來縮進(jìn)。Python2的代碼中混合使用制表符和空格的縮進(jìn),應(yīng)該轉(zhuǎn)化為完全使用空格。3.最大行長度限制所有行最多79個字符。下垂的長塊結(jié)構(gòu)限制為更少的文本(文檔字符串或注釋),行的長度應(yīng)該限制在72個字符。334.換行應(yīng)該在二元操作符前面還是后面幾十年來推薦的風(fēng)格是在二元操作符后換行。但這會通過兩種方式影響可讀性:操作符往往分散在屏幕的不同的列上,并且每個操作符都被移動到遠(yuǎn)離其操作數(shù)。1.5代碼風(fēng)格5.空行用兩行空行分割頂層函數(shù)和類的定義。類內(nèi)方法的定義用單個空行分割。額外的空行可被用于(保守的(sparingly))分割一組相關(guān)函數(shù)(groupsofrelatedfunctions)。在一組相關(guān)的單句中間可以省略空行.(例如.一組啞元(asetofdummyimplementations))。在函數(shù)中使用空行時,請謹(jǐn)慎的用于表示一個邏輯段落(indicatelogicalsections)。346.源文件編碼Python核心發(fā)布中的代碼應(yīng)該始終使用UTF-8(或Python2中用ASCII)。文件使用ASCII(Python2中)或UTF-8(Python3中)不應(yīng)有編碼聲明。在標(biāo)準(zhǔn)庫中,非默認(rèn)編碼僅用于測試目的或注釋或文檔字符串需要提及包含非ASCII字符的作者名;否則,使用\x,\u,\U,或\N是字符串中包含非ASCII數(shù)據(jù)的首先方式。1.5代碼風(fēng)格7.導(dǎo)入#通常應(yīng)該在單獨的行中導(dǎo)入(Imports)。importosimport

sys#這樣也是可以的fromsubprocessimportPopen,PIPEImports通常被放置在文件的頂部,僅在模塊注釋和文檔字符串之后,在模塊的全局變量和常量之前。358.字符串引號Python中,單引號字符串和雙引號字符串是一樣的,本PEP不建議如此,建議選擇一個并堅持下去。當(dāng)一個字符串包含單引號字符或雙引號字符時,使用另一種字符串引號來避免字符串中使用反斜杠。這可以提高可讀性。三引號字符串,總是使用雙引號字符,與PEP257文檔字符串規(guī)范保持一致。1.5代碼風(fēng)格361.5代碼風(fēng)格9.空格避免尾隨空格。因為它通常是無形的,它可能會讓人很困惑:如一個反斜杠,后跟一個空格和一個換行符不算作一行延續(xù)標(biāo)記。有些編輯器不保護(hù)它,并且許多項目(如CPython本身)導(dǎo)向鉤子,拒絕它。始終在這些二元運算符兩邊放置一個空格:賦值(=),比較(==,<,>,!=,<>,<=,>=,in,notin,is,isnot),布爾運算(and,or,not)。如果使用了不同優(yōu)先級的操作符,在低優(yōu)先級操作符周圍增加空格(一個或多個)。不要使用多于一個空格,二元運算符兩側(cè)空格數(shù)量相等。371.5代碼風(fēng)格10.注釋同代碼不一致的注釋比沒注釋更差.當(dāng)代碼修改時,始終優(yōu)先更新注釋!注釋應(yīng)該是完整的句子.如果注釋是一個短語或句子,首字母應(yīng)該大寫,除非他是一個以小寫字母開頭的標(biāo)識符(永遠(yuǎn)不要修改標(biāo)識符的大小寫)。如果注釋很短,最好省略末尾的句號。注釋塊通常由一個或多個由完整句子構(gòu)成的段落組成,每個句子都應(yīng)該以句號結(jié)尾。11.注釋塊注釋塊通常應(yīng)用于跟隨著一些(或者全部)代碼并和這些代碼有著相同的縮進(jìn)層次.注釋塊中每行以'#'和一個空格開始(除非他是注釋內(nèi)的縮進(jìn)文本)。注釋塊內(nèi)的段落以僅含單個'#'的行分割。12.行內(nèi)注釋行內(nèi)注釋應(yīng)該謹(jǐn)慎使用。13.文檔字符串應(yīng)該一直遵守在PEP257中編寫好的文檔字符串(又名"docstrings")的約定,""""""DocumentationStrings--文檔化字符;1.5代碼風(fēng)格14.命名約定Python庫的命名約定有點混亂,所以我們將永遠(yuǎn)不能使之變得完全一致不過還是有公認(rèn)的命名規(guī)范的。15.根本原則用戶可見的API的公開部分的名稱,應(yīng)該體現(xiàn)用法而不是實現(xiàn)。1.5代碼風(fēng)格16.描述:命名風(fēng)格有許多不同的命名風(fēng)格.以下的有助于辨認(rèn)正在使用的命名風(fēng)格,獨立于它們的作用。以下的命名風(fēng)格是眾所周知的:?b(單個小寫字母)?B(單個大寫字母)?小寫串如:getname?帶下劃的小寫串如:_getname,lower_case_with_underscores?大寫串如:GETNAME?帶下劃的大寫串如:_GETNAME,UPPER_CASE_WITH_UNDERSCORES?CapitalizedWords(首字母大寫單詞串)(或CapWords,CamelCase/駝峰命名法--這樣命名是由于它的字母錯落有致的樣子而來的.這有時也被當(dāng)作StudlyCaps。如:GetName。1.5代碼風(fēng)格注意:當(dāng)CapWords中使用縮寫,大寫所有的縮寫字母。因此HTTPServerError優(yōu)于HttpServerError。?mixedCase(混合大小寫串)(與首字母大寫串不同之處在于第一個字符是小寫如:getName)?Capitalized_Words_With_Underscores(帶下劃線的首字母大寫串)(丑陋!)1.5代碼風(fēng)格a.應(yīng)避免的名字永遠(yuǎn)不要用字符'l'(小寫字母el(就是讀音,下同)),'O'(大寫字母oh),或'I'(大寫字母eye)作為單字符的變量名。在某些字體中,這些字符不能與數(shù)字1和0分開.當(dāng)想要使用'l'時,用'L'代替它。b.包和模塊名模塊應(yīng)該是簡短的,全小寫的名字.可以在模塊名中使用下劃線來提高可讀性。Python包名也應(yīng)該是簡短的,全小寫的名字,不鼓勵使用下劃線。當(dāng)一個用C或C++寫的擴(kuò)展模塊有一個伴隨的Python模塊,這個Python模塊提供了一個更高層(例如,更面向?qū)ο?的接口時,C/C++模塊有一個前導(dǎo)下劃線(如:_socket)1.5代碼風(fēng)格c.類名幾乎沒有例外,類名總是使用首字母大寫單詞串(CapWords)的約定。d.異常名因為異常應(yīng)該是一個類,類的規(guī)范也適用這里。無論怎樣,你應(yīng)該在異常名中使用后綴"Error"(如果實際是一個錯誤)。似乎內(nèi)建(擴(kuò)展)的模塊使用"error"(例如:os.error),而Python模塊通常用"Error"(例如:xdrlib.Error)。1.5代碼風(fēng)格e.全局變量名(讓我們希望這些變量打算只被用于模塊內(nèi)部)這些約定與那些用于函數(shù)的約定差不多。被設(shè)計可以通過"fromMimport*"來使用的那些模塊,應(yīng)該使用all機(jī)制防止導(dǎo)出全局變量,或使用加前綴的舊規(guī)則,在那些不想被導(dǎo)入的全局變量(還有內(nèi)部函數(shù)和類)前加一個下劃線。f.函數(shù)名函數(shù)名應(yīng)該為小寫,可以將單詞用下劃線分開以增加可讀性。mixedCase混合大小寫僅被允許用于這種風(fēng)格已經(jīng)占優(yōu)勢的上下文(如:threading.py)以便保持向后兼容。1.5代碼風(fēng)格g.函數(shù)和方法參數(shù)總是使用self做實例方法的第一個參數(shù)??偸鞘褂胏ls做類方法的第一個參數(shù)。如果一個函數(shù)的參數(shù)名與保留關(guān)鍵字沖突,最好是為參數(shù)名添加一個后置下劃線而不是使用縮寫或錯誤的拼寫。因此class_比clss好。(也許使用同義詞來避免更好。)。h.方法名和實例變量大體上和函數(shù)相同:使用小寫單詞,必要時用下劃線分隔增加可讀性.僅為不打算作為類的公共接口的內(nèi)部方法和實例變量使用一個前導(dǎo)下劃線.為了避免和子類命名沖突,使用兩個前導(dǎo)下劃線調(diào)用Python的名稱改編規(guī)則。Python用類名改編這些名字:如果類Foo有一個屬性名為a,通過Foo.a不能訪問。(執(zhí)著的用戶可以通過調(diào)用Foo._Foo__a來訪問。)通常,兩個前導(dǎo)下劃線僅用來避免與子類的屬性名沖突。1.5代碼風(fēng)格i.常量常量通常在模塊級別定義,并且所有的字母都是大寫,單詞用下劃線分開。例如:MAX_OVERFLOW和TOTAL。j.繼承的設(shè)計確定類的方法和實例變量(統(tǒng)稱為:“屬性”)是否公開。如果有疑問,選擇非公開;之后把其變成公開比把一個公開屬性改成非公開要容易。公開屬性是那些你期望與你的類不相關(guān)的客戶使用的,根據(jù)你的承諾來避免向后不兼容的變更。非公開屬性是那些不打算被第三方使用的;你不保證非公開屬性不會改變甚至被刪除。1.6使用幫助1.PythonManuals自帶CHM格式的PythonManuals存放在\Python<x.x>\Doc\目錄下??梢栽贗DLE界面下按F1鍵或點擊help選項下PythonDocs標(biāo)簽打開;也可以在通過“開始→pythonx.x→PythonManuals”打開。2.ModuleDocs包含了python中所有內(nèi)置的和已經(jīng)安裝的第三方Modules文檔信息。單擊“開始”→pythonx.x→ModuleDocs,出現(xiàn)pydoc程序界面,用戶可以在搜索框直接查找需要的內(nèi)容。用戶也可以點擊OpenBrowser建立本地臨時的WebServer,瀏覽網(wǎng)頁版的文檔信息。需要關(guān)閉時,點擊“QuitServing”即可。1.6使用幫助2.ModuleDocs利用pydoc手工在指定端口打開WebDocumentationServer,代碼為"python-mpydoc-p6789"(表示打開pydoc模塊來查看Python文檔,并在6789端口上啟動WebServer)。然后訪問“http://localhost:6789/”,可以看到所有已經(jīng)安裝的Modules文檔信息。當(dāng)需要關(guān)閉時,按Ctrl+C鍵終止命令或者關(guān)閉命令界面即可。利用pydoc在終端下查看文檔信息,在命令行中執(zhí)行“python-mpydoc函數(shù)名或模塊名”可以看到自動生成的文檔信息,按Q鍵退出。例如查看os模塊文檔,代碼為"python-mpydocos";在當(dāng)前目錄生成dir()函數(shù)的HTML文檔,代碼為"python-mpydoc-wdir"。在Linux下同樣適合用pydoc方式查看文檔。1.6使用幫助3.help()和dir()查看對象信息:help([object])查看所有的keyword:help("keywords")查看所有的modules:help("modules")查看常見的topics:help("topics")查看模塊,例如:help("sys")查看數(shù)據(jù)類型,例如:help("list")查看數(shù)據(jù)類型的成員方法,例如:help("list.append")對于已定義或引入的對象,help([object])查詢不使用單引號和雙引號;對于未引入的模塊等對象,要使用單引號或雙引號。1.6使用幫助2)查看當(dāng)前屬性及方法:dir()查看對象的屬性及方法用dir([object]),dir([object])查詢不使用單引號和雙引號。注意,help()函數(shù)多用來查看對象的詳細(xì)說明,按Q鍵退出;dir()函數(shù)多用來查看對象的屬性及方法,輸出的是列表。在使用help()和dir()之前要確定查詢的對象已被定義或引入,否則會報錯,例如“NameError:nameisnotdefined”。4.官方在線文檔其網(wǎng)址為“/doc”。1.6使用幫助5.Q&ASegmentFault;StackOverflow。6.搜索與請教Google、百度、必應(yīng)、牛人等等。1.6本章小結(jié)

本章主要介紹了Python語言發(fā)展的歷史及其特點,然后分析了Python2與Python3不同的編程特點,最后以EclipsewithPyDev為例對Python的環(huán)境搭建進(jìn)行了展示,接著對Python自帶的IDLE界面和Python的各種開發(fā)環(huán)境進(jìn)行了講解。讀者需要熟練掌握Python的編程特點,根據(jù)自身情況選擇所需要的IDLE,并熟練地掌握相對應(yīng)的Python開發(fā)工具。522025/11/27Python數(shù)據(jù)分析與實踐532025/11/27第2章Python語言基礎(chǔ)知識本章學(xué)習(xí)目標(biāo):理解變量標(biāo)識符的含義,掌握其構(gòu)造和使用熟練掌握Python中數(shù)字類型的基本運算熟練掌握Python中條件語句的運用552025/11/272.1.1標(biāo)識符標(biāo)識符(IDentifier)是指用來標(biāo)識某個實體的一個符號。在不同的應(yīng)用環(huán)境下有不同的含義。在python里,標(biāo)識符有字母、數(shù)字、下劃線組成。所有標(biāo)識符可以包括英文、數(shù)字以及下劃線(_),但不能以數(shù)字開頭。python中的標(biāo)識符是區(qū)分大小寫的。562025/11/272.1.1標(biāo)識符

另外,以下畫線開頭的標(biāo)識符是有特殊意義的:以單下畫線開頭的(_foo)代表不能直接訪問的類屬性,需通過類提供的接口進(jìn)行訪問,不能用“fromxxximport*”導(dǎo)入;以雙下畫線開頭的(__foo)代表類的私有成員;以雙下畫線開頭和結(jié)尾的(__foo__)代表Python里特殊方法專用的標(biāo)識,例如__init__()代表類的構(gòu)造函數(shù)。2.1.2變量變量來源于數(shù)學(xué),在計算機(jī)語言中能儲存計算結(jié)果或能表示值抽象概念。變量的表現(xiàn)形式是以一個綁定該變量的語句開始的,換句話說,變量可以通過變量名訪問。在Python中沒有變量聲明,下面通過示例來具體看一下Python中變量的應(yīng)用。

在運行helloworld.py時,Python都做了些什么呢?下面來深入研究一下。實際上,即便是運行簡單的程序,Python所做的工作也相當(dāng)多。例如:print(“helloworld!”)運行上述代碼,用戶將看到如下輸出:helloworld!

在運行helloworld.py文件時,末尾的.py指出這是一個Python程序,因此IDE將使用Python解釋器來運行它。Python解釋器讀取整個程序,確定其中每個單詞的含義。例如,當(dāng)看到單詞print時,解釋器就會將括號中的內(nèi)容打印到屏幕,而不管括號中的內(nèi)容是什么。1.運行helloworld.py時發(fā)生的情況下面來嘗試在helloworld.py中使用一個變量。在這個文件開頭添加一行代碼,并對第2行代碼進(jìn)行修改,如下所示:message=”helloworld!”print(message)運行這個程序,看看結(jié)果如何。helloworld!

在這里添加了一個名為message的變量。每個變量都存儲了一個值,即與變量相關(guān)聯(lián)的信息,所存儲的值為文本“helloworld!”。添加變量導(dǎo)致Python解釋器需要做更多的工作,在處理第1行代碼時,它將文本“helloworld!”與變量message關(guān)聯(lián)起來;而處理第2行代碼時,它將與變量message關(guān)聯(lián)的值打印到屏幕。2.使用變量下面進(jìn)一步擴(kuò)展這個程序:修改helloworld.py,使其再打印一條消息。為此,在helloworld.py中添加一個空行,再添加下面兩行代碼:message=”helloworld!”print(message)message=”helloPythonworld!”print(message)運行這個程序,看看結(jié)果如何:helloworld!helloPythonworld!在程序中可隨時修改變量的值,而Python將始終記錄變量的最新值。2.使用變量

在Python中使用變量時需要遵守一些規(guī)則,違反這些規(guī)則將引發(fā)錯誤,請務(wù)必牢記下列有關(guān)變量的規(guī)則:變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線打頭,但不能以數(shù)字打頭,例如,可將變量命名為name_1,但不能將其命名為1_name。變量名不能包含空格,但可使用下劃線來分隔其中的單詞。例如,變量名greeting_message可行,但變量名greetingmessage會引發(fā)錯誤。不要將Python關(guān)鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如print。變量名應(yīng)既簡短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。慎用小寫字母l和大寫字母O,因為它們可能被人錯看成數(shù)字1和0。3.變量的命名622025/11/272.2數(shù)據(jù)類型及運算

Python程序的運行取決于該程序要處理的數(shù)據(jù)。Python中的所有數(shù)據(jù)值都是對象,并且每個對象或者值都有一個類型(type)。對象的類型確定了該對象支持哪些操作,或者換句話講,確定了可以對該數(shù)據(jù)值執(zhí)行哪些操作。類型還確定了該對象的屬性(atribute)和項目(item)(如果存在的話),以及該對象是否可以被改變。632025/11/272.2數(shù)據(jù)類型及運算

一個可以被改變的對象稱為“可變對象”(mutableobject),而不可以被改變的對象稱為“不可變對象”(immutableobject)。內(nèi)置的type(obj)可以接受任何對象作為參數(shù),并返回obj類型的對象。如果對象obj具有類型type(或者其任何子類),則內(nèi)置函數(shù)isinstance(obj,type)將返回True,否則該函數(shù)將返回False。642025/11/27對于一些基本數(shù)據(jù)類型,比如數(shù)字、字符串、元組、列表和字典,Python都有內(nèi)置類型,可以使用type函數(shù)來確定Python給一個變量分配了什么數(shù)據(jù)類型。在下面的示例中,可以看到兩個變量分配了不同的數(shù)據(jù)類型。coffee_cup=”coffee”type(coffee_cup)<class‘str’>cups_consumed=2type(cups_consumed)<class‘int’>Python給coffee_cup分配了數(shù)據(jù)類型str(字符串或字符串常量),因為它看到了引號括起來的一個字符串。然而,對于變量cups_consumed,Python看到了一個整數(shù),因此給它分配了數(shù)據(jù)類型int(整數(shù))。652025/11/27

下面將會對主要介紹數(shù)字類型數(shù)據(jù),其他類型數(shù)據(jù)將在后面章節(jié)中進(jìn)行介紹。開發(fā)者還可以創(chuàng)建用戶自定義類型,這些類型也被稱為類(class)。

Python支持3種不同的數(shù)值類型:整數(shù)(int)、浮點數(shù)(Float)、復(fù)數(shù)(Complex)。2.2.1數(shù)據(jù)類型662025/11/272.2.1數(shù)據(jù)類型

Python中的內(nèi)置數(shù)字對象支持整數(shù)(普通整型和長整型)(int)、浮點型數(shù)字(float)和復(fù)數(shù)(complex)。Python中的所有數(shù)字都是不可變對象,這意味著在對一個數(shù)字對象執(zhí)行任何操作時總是會產(chǎn)生一個新的數(shù)字對象。

注意,數(shù)字常量不包含+或-,如果包含這兩個符號,則表示該符號是一個分隔運算符。672025/11/271.整數(shù)型(int)

在Python中整數(shù)常量可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制。十進(jìn)制常量可以由第一個數(shù)字為非零數(shù)字的數(shù)字序列表示。為了表示八進(jìn)制常量,可以在0后面帶一個八進(jìn)制數(shù)字(0~7)序列。為了表示十六進(jìn)制常量,可以在0x后面帶一個十六進(jìn)制數(shù)字序列(0~9和A~F,可以使用大寫或小寫字母)。與C語言中所指的整型規(guī)則相同。682025/11/271.整數(shù)型(int)

實際上,開發(fā)者不需要擔(dān)心普通整型和長整型之間的區(qū)別,因為在需要的時候?qū)ζ胀ㄕ偷牟僮鲗⑸砷L整型結(jié)果(也就是說,在運算結(jié)果超出普通整型結(jié)果的數(shù)值范圍時)。不過,開發(fā)者可以選擇將字母L(或1)放在任何類型的整數(shù)的后面,以明確地表示該整數(shù)是長整型。長整型沒有預(yù)定義的大小限制,只要內(nèi)存允許,長整型可以無限大。另外,普通整型只占用了幾字節(jié)的內(nèi)存,并且其最小和最大值是由計算的架構(gòu)決定的。sys.maxint是可以使用的最大正整數(shù),-sys.maxint-1是可以使用的最大負(fù)整數(shù)。在32位計算機(jī)上,sys.maxint是2147483647。2.浮點數(shù)(Float)Python將帶小數(shù)點的數(shù)字都稱為浮點數(shù)。大多數(shù)編程語言都使用了這個術(shù)語,它指出了這樣一個事實:小數(shù)點可出現(xiàn)在數(shù)字的任何位置。每種編程語言都須細(xì)心設(shè)計,以妥善地處理浮點數(shù),確保不管小數(shù)點出現(xiàn)在什么位置,數(shù)字的行為都是正常的。

從很大程度上說,使用浮點數(shù)時都無需考慮其行為。你只需輸入要使用的數(shù)字,Python通常都會按你期望的方式處理它們。702025/11/273.復(fù)數(shù)(complex)

復(fù)數(shù)是由兩個浮點值組成的,一個是實部,另一個是虛部,可以理解為數(shù)學(xué)中的無理數(shù)。開發(fā)者可以通過訪何只讀屬性z.real和z.imag訪問復(fù)數(shù)對象z的兩個部分。

開發(fā)者可以將一個虛數(shù)字面常量指定為一個浮點或十進(jìn)制字面常量,后面跟一個j或J,例如:0j,0.j,0.0j,1j,1.j,1.0j,1e0j,1.e0j其未尾的j表示-1的平方根。復(fù)數(shù)通常在電氣工程中使用(在有些其他語言中使用i來表示,但Python選擇使用j。若想表示任何復(fù)數(shù)常數(shù),可以使用一個浮點(或整數(shù))加上或減去一個虛數(shù)。例如要想表示數(shù)字1的復(fù)數(shù),可以使用表達(dá)式1+0j或者1.0+0.0j。712025/11/272.2.2運算符和表達(dá)式

表達(dá)式(expression)是一個代碼語句,python將計算這段表達(dá)式產(chǎn)生一個結(jié)果,最簡單的表達(dá)式是標(biāo)識符。下表中列出的常見運算符。其中運算符按優(yōu)先級遞減順序排列,高優(yōu)先級在前,低優(yōu)先級在后,列在一起的運算符具有相同的優(yōu)先級。第三列給出了運算符的結(jié)合規(guī)則:L(從左到右)、R(從右到左)、NA(無結(jié)合規(guī)則)。運算符說明結(jié)合規(guī)則‘expr,…’字符串轉(zhuǎn)換NA{key:expr,…}創(chuàng)建字典NA[expr,…]創(chuàng)建列表NA(expr,…)創(chuàng)建元組或圓括號NAf(expr,…)函數(shù)調(diào)用L722025/11/272.2.2運算符和表達(dá)式運算符說明結(jié)合規(guī)則‘expr,…’字符串轉(zhuǎn)換NA{key:expr,…}創(chuàng)建字典NA[expr,…]創(chuàng)建列表NA(expr,…)創(chuàng)建元組或圓括號NAf(expr,…)函數(shù)調(diào)用L

在表中,expr、key、f、index、x和y表示任意表達(dá)式,而attr和arg表示任何標(biāo)識符。除了字符串轉(zhuǎn)換之外,符號“...”表示使用逗號分隔的零個或多個重復(fù)表達(dá)式,字符串轉(zhuǎn)換需要一個或多個重復(fù)表達(dá)式。除了字符串轉(zhuǎn)換運算符之外,在所有運算符中,拖尾逗號允許使用且沒有危害,在字符串運算符中禁止使用拖尾逗號。732025/11/272.2.2運算符和表達(dá)式

下面以在Python中對整數(shù)執(zhí)行簡單的加(+)、減(-)、乘(?)、除(/)運算為例進(jìn)行介紹:1+129-813*7215/22.5在終端會話中,Python直接返回運算結(jié)果。742025/11/272.2.2運算符和表達(dá)式

Python使用兩個乘號表示乘方運算:2**383**32710**410000752025/11/272.2.2運算符和表達(dá)式

Python還支持運算次序,因此用戶可以在同一個表達(dá)式中使用多種運算。用戶還可以使用括號來修改運算次序,讓Python按自己指定的次序執(zhí)行運算,例如:5+3*520(5+3)*540

在這些示例中,空格不影響Python計算表達(dá)式的方式,它們的存在旨在讓機(jī)器閱讀代碼時能迅速確定先執(zhí)行哪些運算。762025/11/272.2.2運算符和表達(dá)式

浮點型數(shù)據(jù)的運算與整數(shù)類似,例如:0.1+0.30.42.2*0.51.10.6/0.41.49999999999998需要注意的是,結(jié)果包含的小數(shù)位數(shù)可能是不確定的(例如0.6/0.4)。772025/11/272.2.2運算符和表達(dá)式

在Python中,當(dāng)整型(int)與浮點型(float)做運算時,結(jié)果默認(rèn)是浮點型,例如:5/2.02.5782025/11/272.2.2運算符和表達(dá)式

在Python中有3個布爾運算符,即and、or和not。布爾運算也叫邏輯運算,它的運算結(jié)果只有兩個值,即真(True)和假(False)。一個布爾表達(dá)式也只有一個邏輯結(jié)果,要么為True,要么為False。例如12這樣一個表達(dá)式,它的結(jié)果就是True,而3+1>5這樣一個表達(dá)式,它的結(jié)果就是False。792025/11/272.2.2運算符和表達(dá)式

and也被稱為“與”運算,該運算符連接左、右兩個布爾表達(dá)式,即xandy。若x和y都為True,則and運算的結(jié)果為True;否則,只要x和y中至少有一個為False,整個and運算的結(jié)果就為False。802025/11/272.2.2運算符和表達(dá)式

or也被稱為“或”運算,該運算符連接左、右兩個布爾表達(dá)式,即xory。若x和y都為False,則or運算的結(jié)果為False;否則,只要x和y中至少有一個為True,整個or運算的結(jié)果就為True。812025/11/272.2.2運算符和表達(dá)式

not也被稱為“非”運算,該運算符作用于一個布爾表達(dá)式,即notx。若x為True,則not運算的結(jié)果為False;若x為False,則not運算的結(jié)果為True。822025/11/272.2.2運算符和表達(dá)式

例如:(5>3)and(3+4==7)#左、右兩邊都為True,and運算的結(jié)果為TrueTrue(5<3)and(3+4==7)#左邊為False,右邊為True,and運算的結(jié)果為FalseFalse(5<3)or(3+4==7)#左邊為False,右邊為True,or運算的結(jié)果為TrueTrue(5<3)or(4+2==7)#左、右兩邊都為False,or運算的結(jié)果為FalseFalsenot(5<3)#右邊為False,not運算的結(jié)果為TrueTrue832025/11/272.3分支結(jié)構(gòu)控制語句

說到分支結(jié)構(gòu)控制語句,似乎所有的編程語言都有類似的語句。條件判斷、有限循環(huán)、無限循環(huán)語句,這幾個語句是最基本的,也是必不可少的。842025/11/272.3.1if語句

最基本的結(jié)構(gòu)化命令就是if語句了,在Python中if語句具有如下的基本格式:Ifcondition:statement

下面通過一些例子來展示如何使用if語句。假設(shè)有一個表示某人年齡的變量,而你想知道這個人是否能夠駕駛的年齡,可使用如下代碼:age=19ifage>=18:print(“Youareoldenoughtodrive”)這里要注意print前面要有4個空格,否則運行過程中會出現(xiàn)錯誤。852025/11/272.3.1if語句

在if語句中,縮進(jìn)的作用與for循環(huán)中相同。如果測試通過了,將執(zhí)行if語句后面所有縮進(jìn)的代碼行,否則將忽略它們。

在緊跟在if語句后面的代碼塊中,可根據(jù)需要包含任意數(shù)量的代碼行。862025/11/272.3.2if/else語句

在if語句中,對于是否運行語句,如果條件返回False邏輯值,Python則會移動到下一條語句中。那如果希望在返回False時,可以執(zhí)行另一組語句,這就需要使用到條件語句了。似乎所有的條件語句都使用if…else…。它的作用可以簡單概括為非此即彼。滿足條件時執(zhí)行A語句,否則執(zhí)行B語句。下面來看一下Python中if…else…的具體應(yīng)用示例:age=20ifage>18:print(“Youareanadult”)else:print(“Youareunderage”)…Youareanadult872025/11/272.3.2if/else語句

在使用if-else語句的過程中需要注意如何放置else的位置,如果else縮進(jìn)了,就會發(fā)生錯誤:age=20ifage>18:print(“Youareanadult”)else:print(“Youareunderage”)…YouareanadultFile"stdin",line3else:

^SyntaxError:invalidsyntax882.3.3if/elif/else語句

目前為止,看到了如何使用if或if…else…來控制語句。這使得我們在對程序控制上具有更多的靈活性。然而還有更多。比如當(dāng)需要將一個值與多個范圍的條件進(jìn)行比較,這時就使用Python提供的if-elif-else結(jié)構(gòu)。Python只執(zhí)行if-elif-else結(jié)構(gòu)中的一個代碼塊,它依次檢查每個條件測試,直到遇到通過了的條件測試。測試通過后,Python將執(zhí)行緊跟在它后面的代碼,并跳過余下的測試。892.3.3if/elif/else語句例如:age=41ifage<18:print(“Youareunderage.”)elif18<=age<40:print(“Youareayoungman..”)elif40<=age<60:print(“Youaremiddle-aged..”)else:print(“Youareanoldman..”)…Youaremiddle-aged.902.3.3if/elif/else語句age=20ifage<18:print("Youareunderage.")elif18<=age<40:print("Youareayoungman.")elif40<=age<60:print("Youaremiddle-aged.")else:print("Youareanoldman.")…Youareayoungman.Python并不要求if-elif結(jié)構(gòu)后面必須有else代碼塊。在有些情況下,else代碼塊很有用;而在其他一些情況下,使用一條elif語句來處理特定的情形更清晰,例如:912.3.3if/elif/else語句

else是一條包羅萬象的語句,只要不滿足任何if或elif中的條件測試,其中的代碼就會執(zhí)行,這可能會引入無效甚至惡意的數(shù)據(jù)。如果用戶知道最終要測試的條件,應(yīng)考慮使用一個elif代碼塊來代替else代碼塊。這樣,用戶就可以肯定,僅當(dāng)滿足相應(yīng)的條件時自己的代碼才會執(zhí)行。922.4.1循環(huán)結(jié)構(gòu)控制語句

在編程過程中,總會遇到需要把某個過程重復(fù)N次的情況,這個時候就要使用到循環(huán)語句來完成語句或函數(shù)等任務(wù)的重復(fù)執(zhí)行。93while語句在Python中,while循環(huán)語句是“條件控制的”循環(huán),即無限循環(huán)。只要不滿足某種條件,任務(wù)會一直執(zhí)行,直到滿足條件。例如:94while語句number=1whilenumber<=10:print(number)number=number+1…12345678910

在這個示例中,while語句會先檢查測試條件變量number的值,只要該變量的值小于或等于10,Python語句就會執(zhí)行,在第四行中,while循環(huán)的最后一條語句會將變量的值加1。因此,當(dāng)number等于11時,while的測試語句返回false,此時,一個循環(huán)就終止了。95for語句

在Python中,for循環(huán)結(jié)構(gòu)稱為“計數(shù)控制”循環(huán),即有限循環(huán)。在循環(huán)任務(wù)過程中會出現(xiàn)需要執(zhí)行一定次數(shù)的情況,這個時候可以使用for循環(huán)來完成這個任務(wù)。例如:96for語句numbers=[0,1,2,3,4,5,6,7,8,9]fornumberinnumbers:print(number)…0123456789972.4.2環(huán)嵌套控制語句

循環(huán)嵌套式在一個循環(huán)語句中嵌入另一個循環(huán)語句。例如,位于循環(huán)代碼塊中的一個for循環(huán)就是循環(huán)嵌套。98break語句和continue語句

通常,循環(huán)會不斷地執(zhí)行代碼塊,直到條件不滿足時才會停止。但在有些情況下,你可能想中斷循環(huán),開始進(jìn)入“下一輪”代碼塊執(zhí)行流程或直接結(jié)束循環(huán)。

要結(jié)束或跳出循環(huán),可使用break語句。break語句用于控制程序流程,可使用它來控制哪些代碼行將執(zhí)行,哪些代碼行不執(zhí)行,從而讓程序按你的要求執(zhí)行你要執(zhí)行的代碼。例如,來看一個從1到10,但只打印其中與3乘積小于10的數(shù):99break語句和continue語句number=0whilenumber<10:number+=1ifnumber*3>=10:breakprint(number)

首先將number設(shè)置成了0,由于它小于10,Python進(jìn)入while循環(huán)。進(jìn)入循環(huán)后,我們以步長1的方式往上數(shù)(見第二行),因此number為1。接下來,if語句檢查number與3的求積運算結(jié)果。如果結(jié)果為<10,就讓Python執(zhí)行余下的代碼,將結(jié)果打印出來;如果結(jié)果為>=10,就執(zhí)行break語句,中斷循環(huán)。100while語句123\\\

如果要返回到循環(huán)開頭,并根據(jù)條件測試結(jié)果決定是否繼續(xù)執(zhí)行循環(huán),可使用continue語句,它不像break語句那樣不再執(zhí)行余下的代碼并退出整個循環(huán)。例如,來看一個從1數(shù)到10,但只打印其中偶數(shù)的循環(huán):number=0whilenumber<10:number+=1ifnumber%2==0:continueprint(number)101while語句

首先將number設(shè)置成了0,由于它小于10,Python進(jìn)入while循環(huán)。進(jìn)入循環(huán)后,我們以步長1的方式往上數(shù)(見第二行),因此number為1。接下來,if語句檢查number與2的求模運算結(jié)果。如果結(jié)果為0(意味著number可被2整除),就執(zhí)行continue語句,讓Python忽略余下的代碼,并返回到循環(huán)的開頭。如果當(dāng)前的數(shù)字不能被2整除,就執(zhí)行循環(huán)中余下的代碼,Python將這個數(shù)字打印出來:135791022.4.3range()函數(shù)

Python內(nèi)置的range()函數(shù)可以迭代地生成一組數(shù)字序列,這個功能在循環(huán)語句中特別有用,尤其是跟需要計數(shù)的for循環(huán)語句搭配使用,可以大大降低代碼量。例如,在的代碼中,打印0-9這10個數(shù)字需要首先創(chuàng)建一個包含0-9這10個數(shù)字的數(shù)組,而通過range()函數(shù)能夠更為輕易的實現(xiàn)該功能:1032.4.3range()函數(shù)>>>fornumberinrange(10):...print(number)...01234567891042.4.3range()函數(shù)

如果range()函數(shù)只有一個參數(shù),那么參數(shù)表示數(shù)列的結(jié)束數(shù)字(小于該參數(shù)的最大數(shù)字),且默認(rèn)數(shù)字從0開始,例如輸入?yún)?shù)5,則生成從0開始直到小于5的最大數(shù)字(也就是4)的數(shù)列,即“01234”。如果為range()函數(shù)傳入兩個參數(shù),則第1個參數(shù)表示起始數(shù)字,第2個參數(shù)表示結(jié)束數(shù)字(小于該參數(shù)的最大數(shù)字),例如range(5,10)生成從5開始直到小于10的最大數(shù)字(也就是9)的數(shù)列,即“56789”。如果為range()函數(shù)傳入了第3個參數(shù),則第3個參數(shù)表示步長,即每隔多少取一個數(shù)字,例如range(0,10,3)表示從0開始直到9每隔3取一個數(shù)字組成的數(shù)列,即“0369”。1052.4.3len()函數(shù)

len()函數(shù)用于獲取一個數(shù)組的長度,如果將range()函數(shù)與len()函數(shù)相結(jié)合,那么就可以實現(xiàn)遍歷數(shù)組的功能:>>>arr=['a','b','c','d','e']>>>foriinrange(len(arr)):...print(i,arr[i])...0a1b2c3d4e1062.5常見的Python函數(shù)

C、C++、Java、Ruby、Perl、Lisp……眾多編程語言的程序都是由函數(shù)和類所組成的,當(dāng)然Python程序里包含的不是函數(shù)就是類。1072.5常見的Python函數(shù)

函數(shù)猶如小型程序,可用來執(zhí)行特定的操作。Python提供了很多函數(shù),可用來完成很多神奇的任務(wù)。用戶也可以自己編寫函數(shù)(這將在后面更詳細(xì)地介紹)。前面用的print()就是一個函數(shù)。1082.5常見的Python函數(shù)

再比如,在學(xué)習(xí)運算符和表達(dá)式的時候曾用到**表示乘方運算,實際上可以不使用這個運算符,而使用pow()函數(shù)。2**38pow(2,3)8

這里的pow()就是Python中的一個標(biāo)準(zhǔn)函數(shù),也稱為內(nèi)置函數(shù)。使用這種形式的函數(shù)稱為調(diào)用函數(shù):用戶向它提供實參(即實際傳給函數(shù)的參數(shù),這里是2和3),而它返回一個值。鑒于函數(shù)調(diào)用返回一個值,因此它們也是一個表達(dá)式。1092.5常見的Python函數(shù)1.print()函數(shù)

本節(jié)之前的代碼實際上已經(jīng)多次用到了print()函數(shù),這里專門對其用法進(jìn)行介紹。print()函數(shù)主要用于打印輸出,這在任何編程語言中都是最基本的功能。需要注意的是,print只有在Python3中才是一個函數(shù),而在Python2中卻并不是函數(shù),這就意味著在Python2中print后面不需要括號。本書均以Python3為例進(jìn)行編寫,因此讀者會發(fā)現(xiàn)本書代碼中print后面總是帶著括號,而其參數(shù)都寫著括號中。

print()函數(shù)的第一個接受參數(shù)是期望打印的數(shù)據(jù),這可以是字符串、數(shù)值、布爾、列表、字典等任何類型或其變量。1102.5常見的Python函數(shù)1.print()函數(shù)

下列代碼顯示了使用print()函數(shù)輸出各個類型數(shù)據(jù)的結(jié)果:>>>x=12>>>print(x)#打印數(shù)值變量12>>>s='python'>>>print(s)#打印字符串變量python>>>L=[1,2,3]>>>print(L)#打印列表變量[1,2,3]>>>t=('a','b','c')>>>print(t)#打印元組變量('a','b','c')>>>b=True>>>print(b)#打印布爾變量True>>>d={'a':1,'b':2}>>>print(d)#打印字典變量{'b':2,'a':1}可以看到,無論是何種數(shù)據(jù)類型,print()函數(shù)都有辦法以最合適的方式進(jìn)行輸出。1112.5常見的Python函數(shù)1.print()函數(shù)

在print()函數(shù)中有兩個重要的參數(shù),即sep和end。這兩個參數(shù)可以讓用戶在輸出時自定義間隔符和結(jié)束符。這里用下面的代碼來說明這兩個功能:>>>print("hello","world","and","python")helloworldandpython>>>print("hello","world","and","python",sep=",")hello,world,and,python>>>print("hello","world","and","python",end=".")helloworldandpython.1122.5常見的Python函數(shù)1.print()函數(shù)

除了屏幕輸出(也就是將數(shù)據(jù)結(jié)果顯示在計算機(jī)屏幕上)以外,print()也支持文件輸出(將數(shù)據(jù)輸出到文件中進(jìn)行保存)。為了保存文件,print()提供了一個名為file的參數(shù),例如:>>>out=open("test.txt","w")>>>print("Helloworld",file=out)

上述代碼首先打開了一個文件,名為test.txt,然后使用print()函數(shù)將字符串“Helloworld”寫入到了文件中。1132.5常見的Python函數(shù)1.print()函數(shù)

在打印輸出大量字符串時,格式化功能特別重要,這讓整個輸出語句在格式上顯得更為清晰,尤其是當(dāng)需要將不同類型的變量拼接在一起的時候。Python3中的print()函數(shù)提供了兩種格式化的方式:一種方式兼容了Python2格式化的語法,另一種方式采用了全新的format()函數(shù)。下面先來看看傳統(tǒng)的類C語言的格式化輸出方式:>>>str="Helloworld">>>length=len(str)>>>print("字符串%s的長度是:%d"%(str,length))字符串Helloworld的長度是:11

上述代碼的第3行中的%s表示此處需要一個字符串進(jìn)行填充,%d表示此處需要一個帶符號的整數(shù)進(jìn)行填充,而后面的%(str,length)則表示用str和length這兩個變量分別填充前面的%s和%d,1142.5常見的Python函數(shù)1.print()函數(shù)

另一種格式化方式是使用format()函數(shù),這讓輸出格式更為清晰:>>>str="Helloworld">>>length=len(str)>>>print("字符串{0}的長度是:{1}".format(str,length))字符串Helloworld的長度是:11

在第3行代碼中,{0}表示第1個占位符,{1}表示第2個占位符,以此類推;format()函數(shù)的第1個參數(shù)用于填充{0},第2個參數(shù)用于填充{1},以此類推。在使用format()時并不區(qū)分填充占位符的變量的實際類型,這使得格式化工作更為輕松。1152.5常見的Python函數(shù)1.print()函數(shù)

format()的另一個好處是可以使用數(shù)組下標(biāo),例如:>>>data=["Xiaoming",20]>>>print("{0[0]}is{0[1]}yearsold.".format(data))Xiaomingis20yearsold.

在以上代碼中,{0[0]}表示使用data的第1個值,{0[1]}表示使用data的第2個值,因此分別把data的“Xiaoming”和20這兩個值填充到前、后兩個占位符,得到第3行所示的最終結(jié)果。1162.5常見的Python函數(shù)2.title()函數(shù)

title()以首字母大寫的方式顯示每個單詞,即將每個單詞的首字母都改為大寫。這很有用,因為你經(jīng)常需要將名字視為信息。例如,你可能希望程序?qū)⒅祃isa、Lisa和LISA視為同一個名字,并將它們都顯示為Lisa。例如:>>>name=”lisa”>>>print(“Ilike”+name.tilte())IlikeLisa

在這個示例中,小寫的字符串“l(fā)isa”存儲到了變量name中。在print()語句中,title()函數(shù)出現(xiàn)在這個變量的后面。1172.5常見的Python函數(shù)2.title()函數(shù)

方法函數(shù)title()是Python可對數(shù)據(jù)執(zhí)行的操作。在name.title()中,name后面的句點“.”讓Python對變量name執(zhí)行title()方法指定的操作。每個函數(shù)后面都跟著一對括號,這是因為函數(shù)通常需要額外的信息來完成其工作。這種信息是在括號內(nèi)提供的。title()函數(shù)不需要額外的信息,因此它后面的括號是空的。1182.5常見的Python函數(shù)2.title()函數(shù)

另外還有幾個很有用的大小寫處理方法。例如要將字符串改為全部大寫或全部小寫,可以像下面這樣做:>>>name="lisa">>>print(name.upper())LISA>>>name="LiSA">>>print(name.lower())lisa1192.5常見的Python函數(shù)2.title()函數(shù)

在存儲數(shù)據(jù)時,lower()方法很有用。在很多時候無法依靠用戶來提供正確的大小寫,因此需要將字符串先轉(zhuǎn)換為小寫,再存儲它們。這樣以后需要顯示這些信息時,再將其轉(zhuǎn)換為最合適的大小寫方式。1202.5常見的Python函數(shù)(3)rstrip()函數(shù)

在程序中,額外的空白可能令人迷惑。對程序員來說,“python”和“python”看起來幾乎沒什么兩樣,但對程序來說,它們卻是兩個不同的字符串。Python能夠發(fā)現(xiàn)“python”中額外的空白,并認(rèn)為它是有意義的——除非你告訴它不是這樣的。

Python能夠找出字符串開頭和末尾多余的空白。要確保字符串末尾沒有空白,可使用函數(shù)rstrip()。1212.5常見的Python函數(shù)(3)rstrip()函數(shù)language=“python”language“pyhton”language.rstrip()“python”language“python”

然而,這種刪除只是暫時的,接下來再次詢問language的值時,用戶會發(fā)現(xiàn)這個字符串與輸入時一樣,依然包含多余的空白(見第7行)。1222.5常見的Python函數(shù)(3)rstrip()函數(shù)

如果要永久刪除這個字符串中的空白,必須將刪除操作的結(jié)果存回到變量中:

為了刪除這個字符串中的空白,用戶需要將其末尾的空白去除,再將結(jié)果存回到原來的變量中(見第2行)。language='python'language=language.rstrip()language“python“1232.5常見的Python函數(shù)

還可以去除字符串開頭的空白,或同時去除字符串兩端的空白。為此,可以分別使用lstrip()和strip()方法:

在這個示例中,首先創(chuàng)建了一個開頭和末尾都有空白的字符串,接下來分別刪除末尾(見第2行)、開頭(第4行)和兩端(第6行)的空格。language='python'language.rstrip()'python'language.lstrip()'python'language.strip()'python'

124本章小結(jié)

在本章中大家學(xué)習(xí)了在Python中如何創(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

提交評論