- Python編程基礎教程
- (印度)H.巴辛
- 4647字
- 2021-01-15 14:56:53
第1章 Python簡介
學完本章,你將能夠
?了解Python的歷史;
?理解Python的重要性及特點;
?知道在哪些領域可以使用Python;
?安裝Anaconda。
1.1 簡介
藝術是人類創造力的一種表現,因此編程也是一種藝術。因此,編程語言的選擇非常重要。本書介紹Python,這是一種能夠幫助你成為偉大的藝術家的語言。圖靈獎獲得者、美國普度大學教授艾倫·佩利(A. J. Perlis)曾經說過:“如果一種語言不能對你思考編程的方式產生影響,那么這種語言是不值得學習的。”
Python是一種值得學習的語言。學習Python不僅會激發你用最簡單的方式完成高度復雜的任務,還會打破傳統編程范型的藩籬。Python是能夠改變你的編程方式進而改變你看問題的角度的一種語言。
Python是吉多·范·羅蘇姆(Guido Van Rossum)在20世紀80年代后期開發的一種功能強大的、過程式的、面向對象的編程語言。Python這個名字來自一個名為Monty Python的戲劇團體。Python當前應用于各種開發領域,包括軟件開發、Web開發、桌面GUI開發、教育和科學計算應用開發。因此,它實際上涉足了所有的開發領域。Python之所以很流行,主要歸功于它的簡單性和健壯性。當然,還有很多其他的因素,本章也會介紹這些。
很多第三方的模塊可以完成上述的任務。例如,基于Python的Django是一款非常流行的Web開發框架,追求干凈而快速的開發,加上支持HTML、Emails、FTP等,Django因此成為Web開發的不錯選擇。
第三方庫也可以用于軟件開發。其中,最典型的例子就是用于構建控件的Scions。結合第三方庫的功能和支持,Python也可以大量用于GUI開發和移動應用開發,例如,Kivy可以用于開發多觸點的應用程序。
Python還用于科學計算和分析。SciPy用于工程和數學,IPython用于并行計算。從事統計和機器學習領域的讀者將會發現這些庫非常有用并且易于使用。SciPy提供了和Matlab類似的功能,并且能夠用于處理多維數組。圖1.1概括了Python的應用領域。

圖1.1 Python的一些應用領域
本章介紹Python編程語言。本章按照如下的順序講解:1.2節介紹Python的特點,1.3節介紹編程范型,1.4節介紹Python的發展歷史和應用前景,1.5節介紹Anaconda的安裝,1.6節是本章小結。
1.2 Python的特點
如前所述,Python是一種簡單但功能強大的編程語言。Python是可移植的。它擁有內置的類型和功能眾多的庫,并且它是免費的。本節將簡單介紹Python的特點和功能。
1.2.1 容易
Python很容易學習和理解。實際上,如果你有某種語言的編程背景,你會發現,Python優雅而簡潔。去掉了花括號和圓括號使Python代碼更加簡短易懂。此外,Python中的一些任務很容易實現。例如,要交換兩個數字,用Python語句(a, b)=(b, a)很容易實現。
學習某種新的東西可能是一項耗費精力且復雜的任務。然而,Python的簡單性大大降低了學習它的難度。雖然學習Python中的高級功能可能會有點復雜,但是這值得投入精力。用Python實現的項目也很容易理解。Python代碼簡潔而高效,因此易于理解和管理。
1.2.2 輸入并運行
在大多數的項目中,測試新的技術要進行很多修改,并且要重新編譯和重新運行。這使測試代碼成為一項困難而耗時的任務。在Python中,很容易運行代碼。實際上,我們在Python中運行的是腳本。
在本章稍后,你將會看到,Python還為用戶提供了一種可交互的編程環境,可以在其中獨立地運行命令。
1.2.3 語法
Python的語法很簡單,這使得學習和理解編程很容易。根據大多數人的經驗,Python最吸引人的3個特點就是簡單、短小和靈活。
1.2.4 混合性
如果你從事一個較大的項目,可能會有一個較大的團隊,那么可能某些團隊成員擅長其他的編程語言。這可能會導致在核心的Python代碼中要嵌入一些以其他語言編寫的模塊。Python允許甚至支持這么做。
1.2.5 動態類型
對于管理和對象相關的內存,Python有自己的方式。當在Python中創建一個對象的時候,把內存動態地分配給它。當對象的生命周期結束的時候,其占用的內存會被收回。Python的內存管理使程序更加高效。
1.2.6 內置對象類型
在后面的各章中,我們將會看到,Python擁有內置的對象類型。這使任務很容易完成并且易于管理。此外,Python可以很好地處理這些和對象相關的問題。
1.2.7 大量的庫和工具
在Python中,完成任務變得很容易。這是因為大多數常見的任務(實際上,有些任務并不是太常見)已經用Python中內置的庫完成了。例如,Python擁有能夠幫助用戶開發GUI的庫、編寫移動應用程序的庫、實現安全功能的庫,甚至有讀取MIR圖像的庫。在后面的各章中,我們將會看到,庫和輔助工具甚至能夠使得模式識別這樣的復雜任務很容易完成。
1.2.8 可移植性
用Python編寫的程序可以在幾乎所有已知的平臺上運行,如Windows、Linux或Mac平臺。Python自身就是用C編寫的。
1.2.9 免費
Python并不是專有的軟件。任何人都可以下載各種各樣可用的Python編譯器。此外,在發布用Python開發的代碼的時候,不會有任何的法律問題。
1.3 編程范型
1.3.1 過程式編程
在過程式編程語言中,程序實際上是按照順序執行的一組語句。程序所擁有的唯一的可選擇性(術語叫作可管理性),就是將其劃分為較小的模塊。例如,C就是一種過程式編程語言。Python支持過程式編程。本書前8章將介紹過程式編程。
1.3.2 面向對象編程
Python主要關注一個類的實例。類的實例叫作對象。類是對要解決的問題有重要意義的一個現實的或虛擬的實體,它具有鮮明的邊界。例如,在負責學生管理的一個程序中,“student”可能是一個類。我們可以通過方法來創建類的實例并完成要實現的任務。Python是一種面向對象的語言。本書第9~13章將介紹面向對象編程。
1.3.3 函數式編程
Python也支持函數式編程。此外,Python支持數據不可變性、尾調用優化等。擁有函數式編程背景的開發人員應該聽說過這些術語。函數式編程超出了本書的討論范圍。然而,本書后面各章會討論上面提到的這些特性。
1.4 Python的發展歷史和應用前景
介紹完Python的特點,我們現在來看看Python的發展歷史和應用前景。本節簡短地介紹Python的發展歷史和應用前景,并且激勵讀者去學習和使用這門語言。
1.4.1 發展歷史
Python是使用C編寫的。它是由吉多·范·羅蘇姆(Guido Van Rossum)發明的。這里提醒一下讀者,Python這門語言和蟒蛇或蛇沒有任何關系。這種語言的名字來自一部名為Monty Python’s Flying Circus的喜劇,而這是吉多·范·羅蘇姆最喜歡的喜劇之一。許多人認為Python有趣的地方在于富有靈感。
Python之所以易于學習,是因為其核心相當精練。Python之所以如此簡單,也是因為開發者期望能夠發明一種簡單的、易于學習而功能強大的語言。
由于一群專業人士致力于為世界提供一種容易而強大的語言,Python得到了持續的改進和完善。隨著這門語言的發展,出現了很多Python興趣團體和論壇。Python的修改可通過Python增強項目(Python Enhancement Project,PEP)的形式來提出。Python軟件基金會(Python Software Foundation,PSF)具體負責這項工作。
1.4.2 應用前景
Python用于完成很多的任務,其中,最重要的一些任務如下所示:
?圖形用戶界面(Graphical User Interface,GUI)開發;
?Web頁面腳本編程;
?數據庫編程;
?原型設計;
?游戲開發;
?基于編程的組件開發。
如果你使用的是UNIX或Linux系統,那么你不需要安裝Python。這是因為在UNIX和Linux系統中,Python通常是預先安裝好的。然而,如果你使用的是Windows系統,那么你需要下載Python。一旦決定下載Python,請查找它的最新版本。讀者需要注意確保所下載的版本不是alpha版或beta版。下一節將簡單介紹下載開源的發布版軟件Anaconda的步驟。
很多針對Python的開發環境可供使用,其中的一些如下:
?PyDev with Eclipse;
?Emacs;
?Vim;
?TextMate;
?Gedit;
?Idle;
?PIDA(Linux版,基于Vim);
?NotePad++(Windows版,基于Vim);
?BlueFish(Linux版,基于Vim)。
1.5 安裝Anaconda
要安裝Anaconda,請先訪問其官方網站并選擇相應的安裝程序(Windows或Mac OS或Linux版)。本節將介紹在Windows系統上安裝Anaconda的步驟。
首先,必須選擇安裝程序(32位的或64位的)。然后,在所選的安裝程序上單擊并下載.exe文件。安裝程序會要求你將其安裝到默認的位置。你也可以提供一個新的位置。在安裝的過程中,你可能需要關閉防病毒軟件。圖1.2到圖1.6展示了詳細的安裝步驟。

圖1.2 安裝程序的歡迎界面,要求用戶關閉所有運行的應用程序然后單擊Next按鈕

圖1.3 同意Anaconda3 4.3.0 (32-bit)的許可協議

圖1.4 選擇要為個別用戶還是所有用戶安裝Anaconda

圖1.5 選擇安裝到哪個文件夾

圖1.6 決定是否要將Anaconda添加到path環境變量中,以及是否要將Anaconda注冊為默認的Python 3.6版本
接下來,安裝過程就開始了。安裝結束后,會出現圖1.7和圖1.8所示的界面。

圖1.7 安裝完成后出現此界面

圖1.8 用戶可以選擇在云上共享筆記本
一旦安裝了Anaconda,就可以打開Anaconda并運行腳本了。圖1.9展示了Anaconda的導航界面。從各種可用的選項中,可以選擇適合你的選項。例如,可以打開QtConsole并運行命令/腳本。圖1.10展示了QtConsole的界面。這里寫入的命令你現在可能還看不懂,等到學習后面幾章的時候就一目了然了。

圖1.9 Anaconda的導航界面

圖1.10 QtConsole
1.6 小結
在繼續學習之前,你必須先記住Python和其他語言的一些不同之處。以下幾點可以幫助你避免混淆。
?在Python中,語句并不是以任何特殊字符而結束的。在Python中以換行符表示語句的結束。如果一條語句跨越多行,那么下一行必須以一個斜杠(\)開頭。
?在Python中,縮進用來表示循環的開始。Python中的循環并不會以分隔符或關鍵字開始或結束。
?用Python編寫的文件通常另存為.py文件。
?在Python程序中,不需要聲明一個變量的類型。
Python語言的核心內容很少,因此很容易學習。此外,有些內容幾乎是所有語言中都有的,如if/else、循環和異常處理等。
本章介紹了Python及其特點。Python支持3種編程范型,即過程式編程、面向對象編程和函數式編程。本章為學習后面的內容打下了一個基礎。本章還明確了本書中的代碼需要在Python 3.X上運行。
1.6.1 術語
PEP(Python Enhancement Project):表示Python增強項目。
PSF(Python Software Foundation):表示Python軟件基金會。
1.6.2 知識要點
?Python是一種功能強大的、過程式的、面向對象的、函數式的編程語言,它是由吉多·范·羅蘇姆(Guido Van Rossum)在20世紀80年代晚期發明的。
?Python是開源的。
?Python的應用領域包括軟件開發、Web開發、桌面GUI開發、教育和科學計算應用開發等。
?Python由于其簡單性和健壯性而受歡迎。
?Python很容易與C++和Java交互。
?SciPy用于工程和數學計算,IPython用于并行計算等,Scions用于構建控件。
?Python的各種開發環境包括PyDev with Eclipse、Emacs、Vim、TextMate、Gedit、Idle、PIDA(Linux版,基于Vim)、NotePad++(Windows版)和BlueFish(Linux版)。
1.7 練習
選擇題
1.Python可以繼承如下______語言創建的類。
(a)只有Python
(b)Python、C++
(c)Python、C++、C#和Java
(d)以上都不對
2.______發明了Python。
(a)Monty Python
(b)Guido Van Rossum
(c)Dennis Richie
(d)以上都不對
3.Monty Python是______。
(a)Python編程語言的創始人
(b)英國的喜劇團體
(c)美國樂隊
(d)Dosey Howser的兄弟
4.在Python中,______庫和工具。
(a)不支持
(b)支持但并不鼓勵
(c)支持并鼓勵
(d)支持(只有PSF的那些才支持)
5.Python擁有______。
(a)內置的對象
(b)數據類型
(c)以上都對
(d)以上都不對
6.Python是一種______。
(a)過程式語言
(b)面向對象語言
(c)函數式語言
(d)以上都對
7.由于沒有數據類型,因此一段Python代碼適用于各種對象。這稱為______。
(a)動態綁定
(b)動態類型
(c)動態領導
(d)以上都不對
8.______是自動內存管理。
(a)自動給對象分配內存
(b)在生命周期結束的時候收回內存
(c)以上都對
(d)以上都不對
9.PEP的全稱是______。
(a)Python Ending Procedure
(b)Python Enhancement proposal
(c)Python Endearment Project
(d)以上都不對
10.PSF的全稱是______。
(a)Python Software Foundation
(b)Python Selection Function
(c)Python Segregation Function
(d)以上都不對
11.Python能用于______開發。
(a)GUI
(b)Web腳本
(c)游戲
(d)以上都對
12.使用Python能夠進行______。
(a)系統編程
(b)基于編程的組件開發
(c)科學計算編程
(d)以上都對
13.Python用在______中。
(a)Google
(b)Raspberry Pi
(c)Bit Torrent
(d)以上都對
14.Python用在______中。
(a)App Engine
(b)YouTube共享
(c)實時編程
(d)以上都對
15.PyPy和IDLE兩種程序中更快的是______。
(a)PyPy
(b)IDLE
(c)兩者一樣快
(d)取決于任務
1.8 理論回顧
1.寫出使用Python的3個項目的名稱。
2.說明Python的幾種應用領域。
3.Python是什么類型的編程語言(過程式、面向對象或函數式)?
4.什么是PEP?
5.什么是PSF?
6.誰負責管理Python?
7.Python是開源軟件還是專有軟件?
8.Python能夠支持什么語言?
9.說明Python的發展歷史。
10.說出幾種Python編輯器。
11.Python有哪些特點?
12.和其他語言相比,使用Python的優勢有哪些?
13.什么是動態類型?
14.Python有數據類型嗎?
15.Python和Java有何不同?
- AngularJS入門與進階
- Java EE 6 企業級應用開發教程
- Oracle 12c中文版數據庫管理、應用與開發實踐教程 (清華電腦學堂)
- INSTANT Weka How-to
- Python 3破冰人工智能:從入門到實戰
- Visual Basic程序設計與應用實踐教程
- Mastering Python Networking
- Android開發:從0到1 (清華開發者書庫)
- MATLAB 2020從入門到精通
- Mobile Device Exploitation Cookbook
- 深入理解C指針
- Nagios Core Administration Cookbook(Second Edition)
- 愛上C語言:C KISS
- Oracle Database XE 11gR2 Jump Start Guide
- DevOps 精要:業務視角