官术网_书友最值得收藏!

1.1 Python綜述

Python是一種可以撰寫跨平臺應用程序的面向對象程序設計語言,它具有卓越的通用性、高效性、平臺移植性和安全性,被廣泛應用于Web、PC、商業分析等領域,同時在全球范圍內擁有眾多開發者社群。

1.1.1 了解Python的特性及版本

1. Python的歷史及特點

Guido Van Rossum于1989年底首創Python,當時他還在荷蘭的CWI(Centrum voor Wiskunde en Informatica,國家數學和計算機科學研究院)工作。1991年初,Python發布了第1個公開發行版。至2021年,Python已經流行并發展了30年,在各個領域都有著廣泛的應用,究其原因,Python的流行歸結于以下幾個方面。

? 解釋性語言:解釋性語言的程序不需要開發者進行編譯,在運行程序時才被翻譯成機器代碼。腳本語言解釋執行的特點是“隨時編輯、隨時生效”。計算機硬件愈發廉價,間接使得在多數商務應用中軟件的運行效率不再是選擇開發語言的首要標準。而企業也逐步意識到開發效率和可移植性的重要性,這使得腳本語言在軟件項目中扮演著越來越重要的角色。

? 高級性:Python的高級性不是相對于匯編語言而言的,而是相對于C++、Java等高級語言而言的。Python在語言層面對開發者提供了更強大的支持。任何具有規模的應用程序都需要用到鏈表、字典等數據結構,在Python中,List、Set、Dict等是內建于語言本身的。在核心語言中提供這些重要的構建單元,可以鼓勵人們使用它們,縮短開發時間,減少代碼量,生產出可讀性更好的代碼。而在C++等語言中,這些需要通過附加的標準庫來實現。

? 膠水語言(glue language):即使讀者從未學習過Python,可能也知道Python是最主要的膠水語言之一。膠水語言是用來連接軟件組件的程序設計語言,這意味著Python就像一只八爪章魚,可以連接各種主要的技術標準,比如Shell Command、Windows DLL和Web Service。在B/S應用大行其道的時代,曾經出現過幾十個Python Web開發框架,發展到現在已經形成了Django、Tornado等成熟的解決方案。

? 跨平臺性:Windows、Linux、macOS等操作系統的優劣之爭由來已久,但這是一個永無止境的話題。目前已形成的共識可以歸結為:Windows客戶端簡單易用,Linux操作系統勝在穩定性,macOS操作系統提供了更好的用戶體驗。Python在各平臺上都實現了編譯解釋器,使得Python程序可以運行在不同的操作系統平臺上。

? 健壯性:所謂健壯的系統是指對于規范要求以外的輸入能夠判斷出這個輸入不符合規范要求,并有合理的處理方式。一個軟件能夠檢測自己內部的設計或者編碼錯誤,并得到正確的執行結果,這是軟件的正確性標準,但也可以說,軟件有內部的保護機制,是模塊級健壯的。Python的強類型機制、異常處理、垃圾的自動收集等是其程序健壯性的重要保證。使用Python的開發者不用在資源申請、回收等方面花費太多精力。

? 易學易用:Python的設計哲學是“優雅”“明確”“簡單”。由于Python的簡潔、易讀及可擴展性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經采用Python教授程序設計課程,如卡耐基梅隆大學的編程基礎、麻省理工學院的計算機科學及編程導論就使用Python講授。眾多開源的科學計算軟件包都提供了Python的調用接口,如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK。當然,在本書的主題Web領域,Python目前涌現了眾多框架,最具代表性的就是本書將要講解的Django、Tornado、Flask和Twisted。

說明:Python是一種解釋性語言,雖然屬于開源項目,但我們可以將其用于商業用途,并且可以將其放在用于商業用途的產品光盤中一同發售。

2. Python的當前版本

經過長時間的發展,Python同時流行兩個不同的版本,它們分別是2.x和3.x版本,但是與其他語言不同的是,這兩個主要版本之間無法實現兼容。

本書第1版發行時,Python 2還是大多數應用的主流版本,包括本書詳細介紹的Twisted等框架都未發布基于Python 3的穩定版本。但是到了2018年本書第2版發行時,多數Python項目都選擇了Python 3,所有主流框架也都完成了基于Python 3的穩定版本的發布。

而本書確定更新第3版時,Python 2已經退出歷史舞臺,Python 3是Python初學者的必然選擇。因此,本書全部基于Python 3進行講解與實踐。

注意:本書中的程序都是基于Python 3.8介紹的。截止到本書寫作時,雖然已經有Python 3.9,但還不夠完善。

1.1.2 安裝Python

只有在操作系統中安裝了Python環境之后,Python程序才能運行。Python安裝包可以去Python官方網站下載,如圖1.1所示。

注意:雖然這里已經是Python 3.9.1,但當我們選擇Windows版本下載時,最近一次的發行版本依然是3.8.x。

圖1.1 Python安裝包下載

1. 在Windows 10上的安裝

Python的Windows安裝包以python-x.x.x.exe或python-x.x.x.amd64.exe方式命名,其中x.x.x是所下載的版本號。直接運行該程序可以進入Python的安裝界面,如圖1.2所示。

確保對話框下方的“Add Python x.x to PATH”復選框已勾選,然后單擊“Install Now”按鈕繼續安裝,Python在Windows中的安裝過程如圖1.3所示。

圖1.2 Python在Windows中的安裝界面

圖1.3 Python在Windows中的安裝過程

安裝完成后,Python 3的可執行程序路徑就會被自動加入Windows環境變量中。可以通過環境變量對話框查看,具體查找路徑為:【計算機】|【屬性】|【高級系統設置】|【環境變量】對話框中的【Path】變量,如圖1.4所示。

圖1.4 在Windows中設置PATH環境變量

在操作系統中安裝了Python后就可以手動運行Python程序了,比如,通過如下命令運行一個Python文件:

說明:Python代碼文件一般以*.py命名。

或者可以在Console(命令行窗口)中直接運行Python命令,以進入Python環境,如圖1.5所示。圖1.5中的“>>>”是Python命令提示符,在其后可以輸入任意Python命令。

圖1.5 在Windows中啟動Python環境

2. 在Linux與macOS上的安裝

較新的Linux與macOS系統都自帶了Python 3的解釋器。對于Linux來說,如果需要單獨安裝,可以利用這些系統上的軟件包管理器,通過簡單的命令完成Python 3的安裝,如對于Ubuntu來說:

對于macOS系統,可以從Python官網下載pkg安裝包用圖形化方式安裝。

它們的安裝都較簡單,唯一需要注意的是,在這些系統中如果同時安裝了Python 2和Python 3,建議用“python3”命令執行Python程序:

這樣做的原因是,在這些系統中,“python”命令往往指向系統自帶的Python 2解釋器。當然,也可以用更加明確的帶小版本號的命令:

1.1.3 使用Python原生編輯器

IDLE是Python軟件包自帶的一個集成開發環境,初學者可以利用它方便地創建、運行、測試和調試Python程序。在安裝Python后,開發者可以通過【Windows開始】|【Python x.x】|【IDLE】直接運行,IDLE的界面如圖1.6所示。

圖1.6 IDLE的界面

圖1.6中已經完成了一個“Hello World”的演示。通過IDLE,開發者可以快速進入Python環境,除了學習,有經驗的開發者還可以用IDLE進行快速驗證、測試等工作。作為一個編輯器,IDLE環境提供了如下功能。

? 一個多窗口環境,提供自動完成、自動縮進等基于Python的編輯功能。

? 語義解析、關鍵字高亮。

? 提供單步調試、斷點、調用棧視圖等功能。

常用的編輯方式如下。

? Undo:撤銷上一次的修改。

? Redo:重復上一次的修改。

? Cut:將所選文本剪切至剪貼板。

? Copy:將所選文本復制到剪貼板。

? Paste:將剪貼板上的文本粘貼到光標所在的位置。

? Find:在窗口中查找單詞或模式。

? Find in Files:在指定的文件中查找單詞或模式。

? Replace:替換單詞或模式。

? Go to Line:將光標定位到指定的行首。

技巧:Python可以記錄會話期間在命令行中執行過的所有命令。在提示符下,可以按Alt+P組合鍵找回這些命令,每按一次,IDLE就會從最近的命令開始檢索命令歷史,按命令使用的順序逐個顯示。按Alt+N組合鍵,則可以反方向遍歷各個命令,即從最初的命令開始遍歷。

通過菜單【Debug】|【Debugger】可以打開“Debug Control”窗口,在IDLE中輸入Python語句后,可以通過調試對話框中的4個控制按鈕Go(執行)、Step(單步)、Over(單行執行)、Out(跳出函數)進行調試。在IDLE中調試Python語句如圖1.7所示。

圖1.7 在IDLE中調試Python語句

1.1.4 使用Eclipse開發環境

雖然Python自帶的IDLE環境提供了簡單的編輯和調試Python程序的方法,但其功能簡單,無法滿足企業級項目開發的需求。

Python程序本身可以用任何文本編輯器來編寫,從Windows記事本、Notepad++、UltraEdit,到Linux的VIM、EMACS等,有經驗的開發者可以根據自己的習慣進行選擇。但因為初學者可能缺少開發經驗并熟悉Windows平臺的操作,所以本書為初學者推薦一個成熟度較高的開發環境——Eclipse。使用Eclipse的PyDev插件可以搭建可視化、控制靈活、調試方法完備的Python專業開發環境。

1. 安裝Eclipse

Eclipse是一個在Windows環境下開放源代碼的、基于Java的可擴展開發平臺。就其本身而言,它只是一個框架和一組服務,通過插件構建開發環境。讀者可以通過Eclipse官方網站下載適合自己操作系統的最新版本Eclipse軟件包。Eclipse的啟動界面如圖1.8所示。

圖1.8 Eclipse的啟動界面

注意:在安裝Eclipse之前,必須先安裝Java開發套件JDK。

首次啟動Eclipse時會詢問開發者項目的默認路徑,確認則勾選“Use this as the default and do not ask again”復選框,然后單擊“Launch”按鈕即可,如圖1.9所示。

圖1.9 Eclipse項目默認路徑設置

2. 安裝PyDev插件

PyDev是Python在Eclipse中的環境插件,需要在Eclipse啟動后進行安裝。

(1)單擊【Help】|【Install New Software】菜單,在出現的界面中單擊“Add…”按鈕,在Add Repository對話框的“Name”欄中填寫PyDev,在“Location”欄中填寫“http://www.pydev.org/updates”,之后單擊“Add”按鈕,如圖1.10所示。

圖1.10 在Eclipse中搜索PyDev

(2)Eclipse會在線搜索PyDev并列出可安裝的包,開發者需要選擇“PyDev”,然后單擊Install窗口中的“Next>”按鈕,如圖1.11所示。

圖1.11 在Eclipse中安裝PyDev

(3)按照提示完成條目及協議確認,逐步完成安裝即可。在安裝過程中,Eclipse會自動從Internet下載安裝包并安裝,需要耐心等待。

(4)安裝完成后,需要重啟Eclipse才能使PyDev生效。

在進行Python開發之前,需要在Eclipse中先配置Python解釋器的路徑,方法為:選擇【Window】|【Preferences】菜單,在出現的對話框中選擇【PyDev】|【Interpreters】|【Python Interpreter】,單擊對話框中的“Browse for python/pypy.exe”按鈕,在出現的對話框中將“Interpreter Name”設置為Python 3,在“Interpreter Executable”欄為所安裝的Python可執行程序輸入完整路徑名,如“C:\xxx\Python38\python.exe”。Python解釋器的配置如圖1.12所示。

圖1.12 Python解釋器的配置

確認后會出現如圖1.13所示的pythonpath配置對話框。

單擊“OK”按鈕后按照提示完成配置即可,不再贅述。至此Python環境已經在Eclipse中安裝完成。

圖1.13 pythonpath配置

3. 用PyDev新建項目進行Python開發

可以通過在Eclipse中建立PyDev項目來進行Python項目開發。新建PyDev項目的方法如下。

(1)在Eclipse中選擇【File】|【New】|【Project…】菜單,在彈出的對話框中選擇【PyDev】|【PyDev Project】,并單擊“Next >”按鈕,如圖1.14所示。

圖1.14 選擇Eclipse的項目類型

(2)在彈出的PyDev項目對話框中輸入項目的名字,其他選項可保持默認,單擊“Finish”按鈕,如圖1.15所示。

圖1.15 新建PyDev項目

至此,已經可以使用Eclipse的強大功能進行Python開發了。

1.1.5 Python編程入門——解決“斐波那契數列”問題

在1.1.3節中,讀者應該已經完成了對Python“Hello World”程序的編寫。在本節中,通過解決一個被稱為“斐波那契數列”的數學問題,讀者可以對Python編程方法有一個初步了解。

斐波那契數列(Fibonacci Sequence)又被稱為黃金分割數列,因數學家列昂納多?斐波那契以兔子繁殖為例子而引入,故又被稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34……在數學上,斐波那契數列以遞歸的方法定義:F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2)(n≥2,nN*)。簡單地歸結斐波那契數列的規律為:第1個數值為0,第2個數值為1,之后的每個數值都是位于它之前的兩個數值的和。

【示例1-1】如下Python代碼用于每隔一秒打印一個斐波那契數列數字,并且將數列保存到指定的文件中:

代碼解析如下。

? 一般情況下,在Python中用“#”標識注釋行,但有兩種特殊情況:

? 當Python代碼作為可執行文件直接運行在Linux系統中時,“#!/usr/bin/env python”用于告訴系統Python解釋器的位置。

? “ # -*- coding: utf-8 -*-”用于標識本文件用UTF-8格式編碼,雖然Python 3本身默認使用UTF-8編碼,但該項聲明對某些編輯器來說仍然有用。

? import語句用于導入包。本例中導入了time包,因為之后的sleep()函數位于其中。

? Python中的函數定義用def關鍵字完成,“:”用于代碼塊。代碼塊通過縮進對齊而不用大括號來表達代碼邏輯,因為沒有了額外的字符,程序的可讀性更高,而且縮進完全能夠清楚地表達一個語句屬于哪個代碼塊。本例中定義了兩個函數:fbis()和main()。

注意:Python用縮進標識代碼塊,因此一個代碼塊內的每行代碼的前導空格必須一致,否則執行時解釋器會報錯。

? 函數參數無須定義類型,如本例中函數fbis()的參數num。

? list是Python中常用的列表類型,Python中的list類型用中括號“[ ]”定義。本例中fbis()函數的result變量是list的實例,用于保存被生成的數列。

? range(num)函數用于生成從0到num-1的數字序列。

? [for … in …]語句是循環流程語句。在函數fbis()的for語句中,生成一個從0到num-2-1的循環,每個循環體中計算一個數值并加入result列表。

? 列表變量的負數索引用于獲取列表中倒數的元素,如本例中的result[-1]意為獲取result的倒數第1個元素。

? main()函數中用參數10調用fbis()函數,生成10個斐波那契數字。

? Python的內置函數open()用于打開文件,其第1個參數是被打開的文件名,第2個參數是打開的方式,“w+”表示打開待寫入的文件。main()函數將打開的文件句柄放在fobj變量中。

? enumerate()函數會將數組或列表組成一個索引序列,其返回值內包含兩個變量的迭代器,第1個是序列號,第2個是數組或列表中本來就有的元素。

技巧:用enumerate生成帶索引的迭代序列。

? 在Python中可以使用print()函數打印輸出,可以用print顯示變量的字符串表示,或者僅使用變量名查看該變量的原始值。Python的print()函數與字符串格式運算符(%)結合使用,可實現字符串替換功能,這一點和C語言中的printf()函數非常相似。

注意:格式運算符(%)后面有多個被替換變量時一定要放在小括號內。

? 用文件句柄的write()函數可以向文件寫入數據。文件句柄的read()函數可以從文件中讀取數據。

技巧:用open()函數打開文件,用write()函數向文件寫入數據,用read()函數從文件中讀出數據。

? 用time包的sleep()函數可以讓程序暫停一段時間,本例中輸入參數1以指定暫停1秒。

? 與其他高級語言一樣,判斷邏輯用if語句表達。本例中的if語句用于判斷代碼是被其他模塊導入還是直接被執行,如果直接被執行,則調用main()函數。

? __name__是Python的只讀內置變量。在模塊中訪問該變量時,隨著模塊的調用方式的不同,它有不同的值:當該模塊被直接調用時,__name__的值為__main__;當該模塊被其他模塊用import語句調用時,它的值為當前模塊名。

技巧:用本例中的if __name__== '__main__': main()的方法啟動main()函數是Python的常用方法。在Python中,所有內置變量都以“前帶兩個下畫線、后帶兩個下畫線”的方式命名。另一個常用的內置變量是__class__,在類內部使用時其內容為當前類名。

將代碼文件保存為1-1.py文件,無須編譯程序,直接用python命令執行程序,如圖1.16所示。

圖1.16 執行斐波那契數列程序的結果

主站蜘蛛池模板: 吉安市| 曲靖市| 绥芬河市| 隆德县| 上杭县| 清原| 门头沟区| 江都市| 龙游县| 聊城市| 清丰县| 赤壁市| 砀山县| 潍坊市| 新河县| 信宜市| 抚宁县| 疏勒县| 集贤县| 秦安县| 台中县| 高邮市| 穆棱市| 襄城县| 武威市| 读书| 景德镇市| 朝阳县| 丹寨县| 安福县| 武定县| 陵川县| 丰宁| 曲周县| 孝义市| 云南省| 北安市| 永寿县| 托里县| 德阳市| 商丘市|