- Python數據科學零基礎一本通
- 洪錦魁
- 3900字
- 2020-07-03 10:52:18
第1章 基本概念
本章摘要
1-1 認識Python
1-2 Python的起源
1-3 Python語言發展史
1-4 Python的應用范圍
1-5 靜態語言與動態語言
1-6 跨平臺的程序語言
1-7 系統的安裝與執行
1-8 Python 2與Python 3不相容的驗證
1-9 文件的建立、存儲、執行與打開
1-10 程序注釋
1-11 Python彩蛋
1-1 認識Python
Python是一種直譯式(Interpreted Language)、面向對象(Object Oriented Language)的程序語言,它擁有完整的函數庫,可以協助用戶輕松地完成許多常見的工作。
直譯式語言是指,直譯器(Interpretor)會將程序代碼一句一句直接執行,不需要經過編譯(Compile)動作,將語言先轉換成機器碼,再予以執行。目前Python的直譯器是CPython,這是由C語言編寫的一個直譯程序,與Python一樣目前由Python基金會管理使用。
Python也算是一種動態的高級語言,具有垃圾回收(garbage collection)功能。垃圾回收是指程序在執行時,直譯程序會主動收回不再需要的動態內存空間,將內存集中管理,這種機制可以減輕程序設計師的負擔,當然也就減少了程序設計師犯錯的機會。
由于Python開放源碼(Open Source),每個人皆可免費使用或為它貢獻,除了它本身有許多內建的套件(package)或稱模塊(module)外,許多公司也為它開發了更多的套件,促使它的功能可以持續擴充,因此Python目前已經是全球最熱門的程序語言之一。
1-2 Python的起源
Python的最初設計者是吉多·范羅姆蘇(Guido van Rossum),他是荷蘭人,1956年出生于荷蘭哈勒姆,1982年畢業于阿姆斯特丹大學的數學和計算機系,并獲得碩士學位。

吉多·范羅姆蘇在1996年為一本O’Reilly出版社作者Mark Lutz所著的Programming Python的序言中表示:6年前,1989年我想在圣誕節期間思考設計一種程序語言打發時間,當時我正在構思一個新的腳本(script)語言的解釋器,它是ABC語言的后代,期待這個程序語言對UNIX C的程序語言設計師會有吸引力。基于我是蒙提派森飛行馬戲團(Monty Python’s Flying Circus)的瘋狂愛好者,所以就以Python為這個程序命名。
在一些Python的文件或有些書封面喜歡用蟒蛇代表Python,但是從吉多·范羅姆蘇的上述序言可知,Python靈感的來源是馬戲團名稱而非蟒蛇。
1999年,他向美國國防高級研究計劃局(Defense Advanced Research Projects Agency,DARPA)提出Computer Programming for Everybody的研發經費申請,并提出了下列Python的目標。
(1)這是一個簡單直覺式的程序語言,可以和主要程序語言一樣強大。
(2)這是開放源碼(Open Source)的程序語言,每個人皆可自由使用與貢獻。
(3)程序代碼像英語一樣容易理解與使用。
(4)可在短期間內開發一些常用功能。
現在上述目標都已經實現了,Python已經與C/C++、Java一樣成為程序設計師必備的程序語言,然而它卻比C/C++和Java更容易學習。
目前,Python語言是由Python軟件基金會(www.python.org)管理,有關新版軟件下載的相關信息可以在這個基金會取得,可參考附錄A。
1-3 Python語言發展史
在1991年Python正式誕生時,當時的操作系統平臺是Mac。盡管吉多·范羅姆蘇坦言Python是構思于ABC語言,但是ABC語言并沒有成功。吉多·范羅姆蘇本人認為ABC語言并不是一個開放的程序語言,是其失敗的主要原因。因此,在Python的推廣中,他避開了這個錯誤,將Python推向開放式系統,因而獲得了巨大的成功。
1. Python 2.0發布
2000年10月16日,Python 2.0正式發布,主要是增加了垃圾回收的功能,同時支持Unicode。
Unicode是一種適合多語系的編碼規則,主要是使用可變長度字節方式存儲字符,以節省內存空間。例如,對于英文字母而言是使用1字節(byte)空間存儲即可,對于含有附加符號的希臘文、拉丁文或阿拉伯文等則用2字節空間存儲,中文則是以3字節空間存儲,只有極少數的平面輔助文字需要4字節空間存儲。也就是說,這種編碼規則已經包含全球所有語言的字符了,所以采用這種編碼方式設計程序時,其他語系的程序只要支持Unicode編碼即可顯示。例如,法國人即使使用法文版的程序,也可以正常顯示中文。
2. Python 3.0發布
2008年12月3日,Python 3.0正式發布。一般程序語言的發展會考慮到兼容特性,但是Python 3在開發時為了不受先前2.x版本的束縛,因此沒有考慮兼容特性,所以許多早期版本開發的程序是無法在Python 3.x版上執行的。
不過為了解決這個問題,盡管發布了Python 3.x版本,后來又陸續將3.x版的特性移植到Python 2.6/2.7x版上,所以現在進入Python基金會網站時,可以發現有2.7x版和3.7x版的軟件可以下載。
筆者經驗提醒:有一些早期開發的冒險游戲軟件只支持Python 2.7x版,目前尚未支持Python 3.7x版。不過相信這些軟件未來也將朝向支持Python 3.7x版的路邁進。
Python基金會提醒:Python 2.7x已經被確定為最后一個Python 2.x的版本,目前暫定基金會對此版本的支持到2020年。
筆者在撰寫此書時,所有程序都是以Python 3.x版作為主要依據的。
1-4 Python的應用范圍
盡管Python是一個非常適合初學者學習的程序語言,在國外有許多兒童程序語言教學也是以Python為工具,然而它卻是一個功能強大的程序語言,下列是它的部分應用。
(1)設計動畫游戲。
(2)支持圖形用戶接口(Graphical User Interface, GUI)開發。
(3)數據庫開發與設計動態網頁。
(4)科學計算與大數據分析。
(5)人工智能與機器學習。
(6)Google、Yahoo!、YouTube、NASA、Dropbox(文件分享服務)、Reddit(社交網站)在內部都大量使用Python作為開發工具。
(7)網絡爬蟲、黑客攻防。
目前,Google搜索引擎、紐約股票交易所、NASA航天行動的關鍵任務執行,都是使用Python語言。
1-5 靜態語言與動態語言
變量(variable)是一個語言的核心,由變量的設置可以知道這個程序所要完成的工作。
有些程序語言的變量在使用前需要先聲明它的數據類型,這樣編譯程序(compile)會在內存內預留空間給這個變量。這個變量的數據類型經過聲明后,未來無法再改變它的數據類型,這類的程序語言稱為靜態語言(static language),例如,C、C++、Java等。聲明變量可以協助計算機捕捉可能的錯誤,同時也可以讓程序執行速度更快,但是程序設計師需要花更多的時間編寫程序與思考程序的規劃。
有些程序語言的變量在使用前不必聲明它的數據類型,這樣可以用比較少的程序代碼完成更多工作,增加程序設計的便利性,這類程序在執行前不必經過編譯(compile)過程,而是使用直譯器(interpreter)直接直譯(interpret)與執行(execute),這類的程序語言稱為動態語言(dynamic language),有時也可稱這類語言是文字碼語言(scripting language),例如,Python、Perl、Ruby。動態語言執行速度比經過編譯后的靜態語言執行速度慢,所以有相當長的時間動態語言只適合進行短小程序的設計,或是將它作為準備數據供靜態語言處理,在這種狀況下也有人將這種動態語言稱為膠水碼(glue code)。后來隨著軟件技術的進步,直譯器執行速度越來越快,已經可以用它執行復雜的工作了。如果讀者懂Java、C、C++,將會發現,Python相較于這些語言除了便利性,程序設計效率已經遠遠超過這些語言了,這也是Python成為目前最熱門程序語言的原因。
使用Python語言時可以直接在提示信息下(>>>)輸入程序代碼執行工作(可參考1-7節),也可以將程序代碼存儲成文件然后再執行(可參考1-9節)。
1-6 跨平臺的程序語言
Python是一種跨平臺的程序語言,主要的操作系統,如Windows、Mac OS、UNIX、Linux等,都可以安裝和使用。
跨平臺的程序語言意味著,用戶可以在某一個平臺上使用Python設計一個程序,未來這個程序也可以在其他平臺上順利運行。
1-7 系統的安裝與執行
有關安裝Python的步驟請參考附錄A。下面將以Python 3.7x版為例進行說明。雙擊附錄A中所建的在Windows桌面上的idle圖標,將看到下列Python Shell窗口。

圖中符號是提示信息,可以在此輸入Python指令。
程序實例ch1_1.py:使用print( )函數,輸出字符串。

1-8 Python 2與Python 3不相容的驗證
下面是早期在Python 2上執行輸出字符串的print用法。

如果相同的輸出方式應用在Python 3中將出現錯誤。

出現錯誤的原因是,在Python 3中print( )已經是一個函數。不過在1-3節中也提過,Python基金會后來陸續將3.x版的特性移植到Python 2.6/2.7x版上,所以如果在Python 2.6/2.7x版本上使用print( )函數,將可以得到正確的輸出。

1-9 文件的建立、存儲、執行與打開
如果設計一個程序每次均要在Python Shell窗口環境重新輸入命令的話,將是一件麻煩的事,所以程序設計時,可以將所設計的程序保存在文件內是一件重要的事。
1-9-1 文件的建立
在Python Shell窗口中可以執行File→New File命令,建立一個空白的Python文件。

然后可以建立一個Untitled窗口,窗口內容是空白,下面是筆者在空白文件內輸入一條命令的實例。

如果想要執行上述文件,需要先存儲上述文件。
1-9-2 文件的存儲
可以執行File→Save As命令存儲文件。

然后將看到另存新文件對話框,此例將文件存儲在D:/Python/ch1文件夾,文件名是ch1_1(Python的擴展名是py),可以得到下列結果。

單擊“保存”按鈕。

原標題Untitled已經改為ch1_1.py了。
1-9-3 文件的執行
執行Run→Run Module命令,就可以正式執行先前所建的ch1_1.py文件。

執行后,在原先的Python Shell窗口中可以看到執行結果。

學習到此,恭喜你已經成功地建立了一個Python文件,同時執行成功了。
1-9-4 打開文件
假設已經離開ch1_1.py文件,未來想要打開這個程序文件,可以執行File→Open命令。

然后會出現“打開文件”對話框,選擇要打開的文件即可。
1-10 程序注釋
程序注釋的主要功能是讓程序可讀性更高,更容易了解。在企業工作中,一個實用的程序可以很輕易超過幾千或上萬行,此時可能需設計好幾個月,給程序加上程序注釋,可方便自己或他人了解程序內容。
1-10-1 注釋符號#
不論是使用Python Shell直譯器或是Python程序文件中,“#”符號右邊的文字,都稱為程序注釋,Python語言的直譯器會忽略此符號右邊的文字。可參考下列實例。
實例1:在Python Shell窗口注釋的應用1,注釋可以放在程序語句的右邊。

實例2:在Python Shell窗口注釋的應用2,注釋可以放在程序語句的最左邊。

程序實例ch1_2.py:重新設計ch1_1.py,為程序增加注釋。

注:Python程序左邊是沒有行號的,上述行號是筆者為了讀者閱讀方便加上去的。
1-10-2 三個單引號或雙引號
如果要進行大段落的注釋,可以用三個單引號或雙引號將注釋文字包起來。
程序實例ch1_3.py:以三個單引號當作注釋。

上述前5行是程序注釋。
程序實例ch1_4.py:以三個雙引號當作注釋。

上述前5行是程序注釋。
1-11 Python彩蛋
Python核心程序開發人員在軟件內部設計了兩個彩蛋,一個是搞笑網站,一個是經典名句又稱Python之禪。這是在其他軟件中沒有見過的,非常有趣。
1. Python之禪
在Python Shell環境下輸入“import this”即可看到經典名句,其實這些經典名句也代表著研讀Python的意境。

2. Python搞笑網站
可以在Python Shell環境下輸入“import antigravity”即可連接下列網址,讀者可以欣賞有關Python的趣味內容。
https://xkcd.com/353/

習題
設計程序可以輸出下列3行數據。
就讀學校
年級
姓名
