天天看點

《從問題到程式:用Python學程式設計和計算》——1.2 Python語言簡介

本節書摘來自華章計算機《從問題到程式:用python學程式設計和計算》一書中的第1章,第1.2節,作者:裘宗燕 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

本節将首先簡單介紹python語言的一些基本情況,包括其發展和使用的情況。而後介紹python語言系統的安裝和使用方面的基本常識。

1.2.1 python語言的發展和應用

python語言是cwi(荷蘭國家數學和計算機研究中心)的程式員guido van rossum在1989年開始開發的一種進階程式設計語言,當時的主要設計目标是希望能用于友善地管理cwi的amoeba作業系統。後來,由于其各方面的優點而逐漸流行起來。

python語言現在由python軟體基金會(python software foundation,psf)主導開發和管理。psf是一個非營利性的國際組織,其網址為python.org。python 2.0版本于2000年釋出,3.0版本于2008年年底釋出。python 3.0對語言做了全面清理和整合,修正了原來語言裡的許多重要缺陷,使其概念體系更清晰,各方面結構更具有統一性。

目前python處于2.0版與3.0版并存的情況。python 2.0的2.7版已确定為python 2.0的最後版本,psf隻會對其做有限的修改完善,不再做大的更新。psf已經把精力集中于python 3.0。python的3.5版本已于2015年9月釋出。

由于這些情況,本書選擇python 3.0版本作為工作語言,以适應未來發展的需要。書中所有執行個體(及所附代碼)都在3.4版中開發,但這些代碼裡并沒有任何特定于3.4版本的特殊結構,也符合3.5版的規定,應能在各種python 3.0系統上運作。

python語言的特點

python的基本設計目标是讓程式簡單、明确和優雅,在設計上堅持了一套較為清晰而且整齊劃一的風格。python程式具有易寫、易讀、易維護修改的特點,受到廣大使使用者的歡迎。這些特質也使python的使用越來越廣泛。21世紀以來,python已經發展成為最受歡迎的程式設計語言之一,其使用非常廣泛。國際上有些公司或機構做過(或持續在做)有關各種程式設計語言使用情況的統計,在各種統計結果中python都位于前五六名之内。它還被tiobe程式設計語言排行榜(一個很有影響力的語言排行榜)評為2010年度語言。

python語言以統一的方式支援一種先進的程式設計理念和技術:面向對象的程式設計。所有程式設計機制和結構圍繞着對象的概念,程式裡定義和操作的各種實體都是對象。這樣的語言設計有利于程式設計概念的統一性,也使做出的程式代碼和部件可以比較友善地重複使用。python語言的設計也為開發大規模軟體系統提供了很好的支援。

python是一個比較進階的程式設計語言,提供了一批容易使用的資料功能,使人可以很友善地生成和處理大批資料。再加上python語言的一些基本設計的特點,使已經開發出來的程式比較容易修改擴充,有利于軟體系統的更新改造。這些特性有利于減輕軟體開發者的工作負擔,提高編寫複雜程式的工作效率。這也是許多it公司樂于選擇和使用python作為其主要軟體開發語言的最重要原因。

在使用python開發程式的過程中,程式執行采用互動式方式:人可以随時把一個指令送給python系統(解釋器),解釋器立刻執行這個指令(參考圖1.1和1.2),使人馬上就能看到執行的效果。這種執行方式使人可以很友善地在程式設計過程中做各種試驗,提高工作效率。一個python程式(稱為子產品)就是一系列簡單或複雜的指令。人們也把采用這種形式的語言稱為腳本語言(script language),這種語言的程式就像是一系列指令構成的工作腳本。但實際上python并不是一種簡單的腳本語言,而是一個完全能支援大規模軟體開發的通用程式設計語言,其實作也具有較高的實際執行效率。

python的基本語言提供了很豐富的功能,它還附帶了一個規模很大的标準庫,提供了很多在實際應用中非常有用的功能。此外,全世界很多開發者已經為python開發了大量面向各種應用領域的專門程式包,例如面向圖形使用者界面設計、網絡應用、數值計算、資料統計和處理、圖形圖像處理、可視化等。所有重要的應用領域,都可以找到專門的程式包,大大友善了人們用python開發各領域應用軟體和綜合性軟體的工作。

在python語言和标準庫的設計中特别考慮了可擴充性,提供了豐富的接口和工具,使有經驗的程式員比較容易使用其他語言,例如c、c++、cython(一種專門用于擴充python的c語言工具)等編寫python子產品,然後就可以像python标準庫包一樣友善地使用。這種情況也使一些大公司把python用作進階的粘接語言(glue language),用一些較低級的語言實作一批性能要求較高的完成具體工作任務的子產品,而後用python實作整個系統的高層控制和排程。這樣做,既能獲得很好的效率,也友善修改和調整。

python基金會免費提供最新版本的python語言系統和基本開發環境,任何人都可以很友善地獲得這個系統。該系統可以在目前各種主要計算機和軟體平台上運作,其中包含了豐富的标準程式庫包和完整文檔。

python語言有一個很活躍的國際性社團,使用這種語言的人們活動在世界各地(包括中國),探讨、交流學習和使用python的經驗。網際網路上有很多與python有關的資訊,有許多python讨論組。這些都促進了python語言的學習和傳播。

從程式設計學習和教學的角度,python語言也是很好的選擇,主要原因包括:

python語言比較容易入門,不需要知道複雜的概念就可以開始程式設計式,寫出的簡單(或複雜)代碼可以馬上執行,看到計算結果。這使初學者很容易入門,通過簡單的試驗開始程式設計學習,立刻看到自己所寫的程式産生的計算及其效果,在這樣動腦動手的過程中穩步成長,慢慢地越來越深入地了解程式的意義和程式設計過程。

python語言的設計特别強調易讀易了解的形式,采用分層次的格式來區分複雜程式中的一層層結構。這種規定特别有助于初學者養成良好的程式設計習慣,有助于寫出結構清晰、意義明顯的代碼,進而學習和掌握正确的程式設計技術和方法。

python語言機制的跨度比較大,從支援完成最簡單計算的表達式開始,一直延伸到目前最先進的程式設計理念,如面向對象的程式設計、疊代器、資料抽象等。這種情況有利于初學者在一個語言裡逐漸深入學習程式設計和計算,在程式設計中逐漸學習更複雜進階的概念和結構,取得程式設計經驗,在程式設計中深入了解計算的概念和過程。

當然,python也不是完美的語言(完美的語言并不存在),也有些缺點。一些使用也要特别注意。後面讨論中遇到這種問題時,會專門加以說明。

python的應用情況

python已經有了非常廣泛的實際使用,國際上許多知名it公司和機構以其作為主要開發語言,如美國的google、yahoo、dropbox等大公司,cern(歐洲原子能研究中心)、nasa(美國國家航空航天局)等重要機構,還有大量較小的公司和機構。國内企業的應用正在發展,有較大影響的豆瓣網就是用python開發的。

此外,全世界python社團一直在努力,開發了各種各樣的python應用和許多滿足各領域需要的通用python包,這些工作也大大推動了python的廣泛使用。人們開發了一些python的科學計算專用擴充庫。例如得到廣泛使用的科學計算擴充庫numpy(高效的數組資料處理)、scipy(高性能數值運算)和matplotlib(數學繪圖庫)。大量面向資料處理和計算的開源軟體包也為基于python的使用提供了接口(是以可以作為python的庫調用,支援python應用開發)。如著名的計算機視覺庫opencv、三維可視化庫vtk、醫學圖像處理庫itk。python語言與這些擴充庫結合,構成的開發環境很适合工程技術人員和科研人員處理實驗資料、制作圖表,以及開發科學和工程計算方面的應用程式。在應用系統領域,python社團開發了一批支援網絡應用開發的python庫和其他方面的庫和程式設計架構,這些工作和後續經驗的積累,已經使python成為目前使用最多的應用系統開發語言之一。

python正在被世界上越來越多大學用作教授第一門程式設計課程的語言,更多學校以它作為後續課程或選修課程。美國計算機協會會刊(cacm)2014年7月發表了一個調查報告,說python“已經成為目前美國頂尖大學裡最受歡迎的計算機程式設計入門語言。在計算機專業排名前10的學校裡,有8所學校(80%)用python作為程式設計入門語言。在計算機排名前39的學校裡,有27個學校(69%)用python作為程式設計入門語言”。國内許多大學也紛紛開設了python課程。

python語言參考材料

python軟體基金會(psf)通過其網站python.org提供了大量與python語言和程式設計有關的材料。

在psf提供的python系統(包括python解釋器,也被稱為cpython實作,詳見下一節)包含一套python文檔,主要内容包括:

the python tutorial(python教程),其内容是python語言各方面基本情況的介紹,介紹python的基本規則和使用,包括一些簡單的程式示例。

the python language reference(python語言手冊),詳細介紹python語言的整體情況和語言的各種結構。需要了解語言的細節規定時應該查閱這個手冊。

the python standard library(python标準庫手冊),介紹python的所有内置常量、内置函數和内置類型,以及标準庫中包含的一大批程式包。這些程式包提供了許多重要的特殊功能,例如支援開發網際網路應用的功能等。

其他内容,包括cpython系統的情況,典型程式設計問題的常見處理方式(howto),一些常見問題(faq)、術語和解釋,等等。

近年來,由于python語言的發展和普及,國内外都出版了一些有關python語言和程式設計的書籍。國外近年出版的相關書籍較多,國内出版了一些譯本,也有幾本國内作者撰寫的書籍。書後參考文獻列出了幾本,可供參考。

1.2.2 python系統和idle程式設計環境

本節簡單介紹psf主導開發的cpython系統及其附帶的程式設計環境。對python初學者而言,隻使用這個系統及其所帶的程式包就足夠了。目前也有一些由開源軟體社團或商業軟體開發商開發的python系統,以及一些功能更強大的開發環境。鑒于本書的基本設想和目标讀者群,是以不準備涉及任何超出psf的python系統的内容。有興趣的讀者可以在閱讀本書之後,自己進一步學習,不會有特别的困難。

python是一種進階語言,按其文法規定寫出的程式通常稱為python源程式。一個程式也就是一串字元(分為一些行,有一定格式要求,見後面章節),具有人比較容易使用、書寫和閱讀的形式,但計算機不能直接執行它們,因為計算機能直接識别和執行的隻是具有特定二進制形式的機器語言程式。為了運作python語言的程式,需要有一個python解釋器來填補python源程式和實際計算機之間的差異。psf提供的python系統(cpython,以下說python系統就專指這個系統)的主要部分就是一個這種解釋器 。

下面以windows系統中安裝python的情況作為例子,在其他系統裡的情況類似,安裝的内容都差不多。首先需要從psf網站或其他地方下載下傳python系統的安裝檔案,然後在所用計算機環境中成功安裝後,通常可以看到具體安裝内容的快捷啟動方式。python系統安裝後,各部分的安裝位置、系統的啟動方式、啟動後視窗顯示的情況,在不同運作環境裡可能略有不同,但有關系統在功能上沒有本質性差異。

基本python解釋器以指令行方式工作。啟動這個解釋器,它将在螢幕上打開一個互動式的指令行視窗,視窗顯示的情況如圖1.3所示。在這個視窗裡,解釋器首先顯示一些資訊,說明系統的版本号等情況。随後一行說明獲得進一步資訊的方式(通過help等指令)。最後一行顯示符号串 >>>,稱為提示符,其後可以看到一個閃動的輸入光标,表示要求使用者輸入資訊。在這種狀态下,通過鍵盤輸入的字元将顯示在提示符之後,使用者應該在這裡輸入要求python執行的指令(程式)。

《從問題到程式:用Python學程式設計和計算》——1.2 Python語言簡介

python解釋器采用互動解釋的方式工作。如果解釋器得到一個完整的python程式單元,它就執行這個單元,然後輸出執行的結果。python解釋器的行為就是不斷重複這幾個動作的一個工作循環,如圖1.4所示。讀者可以将這個圖與前面讨論計算機的工作方式的圖1.2比較,能看到它們具有同樣的形式。解釋器的工作方式還有些細節,将在後面介紹。

除了上述以指令行方式與使用者互動的基本python解釋器外,這個python系統還提供了一個名字為idle的python程式開發環境,其用途就是幫助使用者更友善地輸入和編輯複雜的python程式,并能随時試驗運作正在開發中的程式。

《從問題到程式:用Python學程式設計和計算》——1.2 Python語言簡介

執行idle時将會打開一個标準的視窗(不是前面指令行形式的視窗)。圖1.5顯示的是打開idle解釋執行視窗的情況。該視窗有些像前面的指令行視窗,idle也顯示提示符并等待輸入。但在這個視窗裡可以更友善地輸入和編輯。

《從問題到程式:用Python學程式設計和計算》——1.2 Python語言簡介

圖1.5中顯示的是執行了三個python程式單元之後的現場情況。其中第一個程式單元的指令(第一個提示符那一行)要求計算1的值,解釋器給出結果1;第二個程式單元要求計算1 + 1,解釋器給出的結果是2;第3個程式單元要求計算2的1000次乘方,解釋器給出了一個很長的結果,也是一個整數,但顯示在連續幾行中。

從圖1.5中可以看到,idle視窗頂部有标準的視窗菜單條,提供了一組菜單指令。本書的附錄d綜述了idle的功能,其中列出了idle的菜單項并給出了簡單解釋。正文第2章和第4章也有一些介紹。

實際上,idle有兩種不同執行模式,可能打開兩種不同視窗。圖1.5顯示的是一種稱為shell的視窗,也稱為指令模式視窗,支援直接輸入指令要求解釋器執行。idle的另一種視窗是一個很好用的python程式編輯器(參見第2章圖2.1),提供了一套友善的輸入、編輯、修改python程式的功能,使人可以很友善地建構和修改所需的程式(編輯程式)。idle還能自動幫助維護良好的python代碼格式,通過不同顔色強調顯示程式中的不同成分。在用這個編輯器完成了一個包含一些行的程式或其部分後,可以随時把它送給解釋器運作,檢查程式的功能。這個編輯器的有關情況将在第2章介紹,第4章介紹了它的更多功能。

除了以互動式方式一個個輸入指令,要求python解釋器執行外,也可以先編寫好一個python程式,而後交給python解釋器執行。在作業系統的指令行視窗中,鍵入python後跟希望執行的python程式檔案名,就能執行該程式了。

此外,運作idle時按f1功能鍵,也能打開python系統自帶的語言文檔。

繼續閱讀