Python簡介

 Python簡介

Python(KK 英語發音:/'pa θɑn/, DJ 英語發音:/ paiθ n/)是一種面向對象、直譯式計算機程序設計語言,也是一種功能強大而完善的通用型語言,創始人爲Guido van Rossum。這種語言具有非常簡捷而清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的操作系統中運行。Python具有豐富和強大的類庫,足以支持絕大多數日常應用。python常被暱稱爲膠水語言,可擴充性可說是Python作爲一種編程語言的特色。新的內置模塊(module)可用 C 或 C++ 寫成,它能很輕鬆的把用其他語言製作的各種模塊(尤其是C/C++)輕鬆聯結在一起。

產生  

Python的創始人爲Guido van Rossum。1989年聖誕節期間,在阿姆斯特丹,Guido爲了打發聖誕節的無趣,決心開發一個新的腳本解釋程序,做爲ABC 語言的一種繼承。之所以選中Python(大蟒蛇的意思)作爲程序的名字,是因爲他是一個Monty Python的飛行馬戲團的愛好者。

  ABC是由Guido參加設計的一種教學語言。就Guido本人看來,ABC 這種語言非常優美和強大,是專門爲非專業程序員設計的。但是ABC語言並沒有成功,究其原因,Guido 認爲是非開放造成的。Guido 決心在Python 中避免這一錯誤(的確如此,Python 與其它的語言如C、C++和Java結合的非常好)。同時,他還想實現在ABC 中閃現過但未曾實現的東西。

  就這樣,Python在Guido手中誕生了。實際上,第一個實現是在Mac機上。可以說,Python是從ABC發展起來,主要受到了Modula-3(另一種相當優美且強大的語言,爲小型團體所設計的)的影響。並且結合了Unix shell和C的習慣。

 

定位 

    很多大規模軟件開發計劃例如Zope,Mnet 及BitTorrent. Google都在廣泛地使用它。

  通常認爲,Python是一種解釋性的語言,但是這種說法是不正確的,實際上,Python在執行時,首先會將.py文件中的源代碼編譯成Python的byte code(字節碼),然後再由Python Virtual Machine來執行這些編譯好的byte code。這種機制的基本思想跟Java,。NET是一致的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。這裏的高級並不是通常意義上的高級,不是說Python的Virtual Machine比Java或。NET的功能更強大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實機器的距離更遠。或者可以這麼說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。

  基於C的Python編譯出的字節碼文件,通常是。pyc格式。

  在實際開發中,python常被暱稱爲膠水語言,這不是說他會把你的手指粘住,而是說他能夠很輕鬆的把用其他語言製作的各種模塊(尤其是C/C++)輕鬆地聯結在一起。常見的一種應用情形是,使用python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D遊戲中的圖形渲染模塊,速度要求非常高,就可以用C++重寫。

風格

  Python在設計上堅持了清晰劃一的風格,這使得Python成爲一門易讀、易維護,並且被大量用戶所歡迎的、用途廣泛的語言。Python直接編寫的程序段有時運行效率甚至高於用C編寫的程序。

  它的作者在設計它的時候,總的指導思想是,對於一個特定的問題,只要有一種最好的方法來解決就好了。這在由Tim Peters寫的python格言(稱爲The Zen of Python)裏面表述爲:There should be one-- and preferably only one --obvious way to do it.

  有意思的是,這正好和Perl語言(另一種功能類似的高級動態語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。這似乎是人們常把Perl和Python互相比較的重要原因。

  Python語言是一種清晰的語言的另一個意思是,它的作者有意的設計限制性很強的語法,使得不好的編程習慣(例如if語句的下一行不向右縮進)都不能通過編譯。這樣有意的強制程序員養成良好的編程習慣。其中很重要的一項就是Python的縮進規則。

  一個和其他大多數語言(如C)的區別就是,一個模塊的界限,完全是由每行的首字符在這一行的位置來決定的(而C語言是用一對花括號{}來明確的定出模塊的邊界的,與字符的位置毫無關係)。這一點曾經引起過爭議。因爲自從C這類的語言誕生後,語言的語法含義與字符的排列方式分離開來,曾經被認爲是一種程序語言的進步。不過不可否認的是,通過強制程序員們縮進(包括if,for和函數定義等所有需要使用模塊的地方),Python確實使得程序更加清晰和美觀。

Python 3

  Python的3.0版本,在開發階段被稱爲Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。爲了不帶入過多的累贅,Python 3.0在設計的時候就沒有考慮向下兼容。許多針對早期Python版本設計的程序都無法在Python 3.0上正常運行。爲了照顧現有程序,Python 2.6作爲一個過渡版本,基本使用了Python 2.x的語法和,同時考慮了向Python 3.0的遷移。基於早期Python版本而能正常運行於Python 2.6並無警告的程序可以通過一個2 to 3的轉換工具無縫遷移到Python 3.0。

  Python 3.0的變化主要在以下幾個方面:

  部分函數和語句的改變:最引人注意的改變是print語句沒有了,取而代之的是print函數

  字符串和字節:類似Java,str類表示一個Unicode字符串,代替了早期版本的unicode類。而一堆字節則用類似b"abc"的語法創建,用bytes類表示

 

應用

系統編程

  提供API,能方便進行系統維護和管理,Linux下標誌性語言之一,是很多系統管理員理想的編程工具。

圖形處理

  有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。

數學處理

  NumPy擴展提供大量與許多標準數學庫的接口。

文本處理

  python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。

數據庫編程

  程序員可通過遵循Python DB-API(數據庫應用程序編程接口)規範的模塊與Microsoft SQL Server,Oracle,Sybase,DB2,Mysql、SQLite等數據庫通信。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。

網絡編程

  提供豐富的模塊支持sockets編程,能方便快速地開發分佈式應用程序。

Web編程

  應用的開發語言,支持最新的XML技術。

多媒體應用

  Python的PyOpenGL模塊封裝了“OpenGL應用程序編程接口”,能進行二維和三維圖像處理。PyGame模塊可用於編寫遊戲軟件。

影響

  Python在編程領域的佔有率一直處於穩步上升之中,根據最新的數據,Python排名第六。前五名分別是Java、C、C++、C#和PHP. 作爲一個很年輕的語言,Python的位置已經相當令人振奮了。隨着微軟將Python納入。Net 平臺,相信Python的將來會更加強勁發展。Python 很可能會成爲.Net平臺快速開發的主流語言。欲瞭解這方面情況,請參考Iron Python的相關信息。

  著名的搜索引擎Google 也大量使用Python。更加令人吃驚的是,在Nokia智能手機所採用的Symbian操作系統上,Python成爲繼C++,Java之後的第三個編程語言!2006年的Google編程大賽已經將Python作爲參賽語言之一,可見Python的影響力之巨大。

  Zope - 應用服務器

  Plone -內容管理系統

  Django - 鼓勵快速開發的web framework

  Twisted - Python Network Application Framework Python的網絡應用程序框架

  TurboGears - 另一個Web應用快速開發框架

  BitTorrent - 著名的BT下載工具

  還有很多遊戲也是用Python製作的

障礙

  1. 運行速度。

  2. 國內市場較小。

  3. 中文資料匱乏(好的python中文資料屈指可數)。託社區的福,有幾本優秀的教材已經被翻譯了,但入門級教材多,高級內容還是隻能看英語版。

  4. 構架選擇太多。不過這也從另一個側面說明,python比較優秀,吸引的人才多,項目也多。

 

相關工具  

Tkinter Python默認的圖形界面接口。Tkinter是一個和Tk接口的Python模塊,Tkinter庫提供了對Tk API的接口,它屬於Tcl/Tk的GUI工具組。Tcl/Tk是由John Ousterhout發展的書寫和圖形設備。Tcl(工具命令語言)是個宏語言,用於簡化shell下複雜程序的開發,Tk工具包是和Tcl一起開發的,目的是爲了簡化用戶接口的設計過程。Tk工具包由許多不同的小部件,如一個按鈕、一個滾動條等。通過Tk提供的這些小部件,我們就可快速地進行GUI開發。Perl、Scheme等語言也利用Tk庫進行GUI開發。Tkinter是跨平臺,在各種平臺下都能使用。
PyGTK 用於python GUI程序開發的GTK+庫。GTK就是用來實現GIMP和Gnome的那個庫。有了它,你完全可以自信的嘗試自己製造Photoshop
PyQt 用於python的Qt開發庫。QT就是實現了KDE環境的那個庫,由一系列的模塊組成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300個類和超過5750個的函數和方法。PyQt還支持一個叫qtext的模塊,它包含一個QScintilla庫。該庫是Scintillar編輯器類的Qt接口。
wxPytho GUI編程框架,熟悉MFC的人會非常喜歡,簡直是同一架構(對於初學者或者對設計要求不高的用戶來說,使用Boa Constructor可以方便迅速的進行wxPython的開發)
PIL python提供強大的圖形處理的能力,並提供廣泛的圖形文件格式支持,該庫能進行圖形格式的轉換、打印和顯示。還能進行一些圖形效果的處理,如圖形的放大、縮小和旋轉等。是Python用戶進行圖象處理的強有力工具。
Psyco 一個Python代碼加速度器,可使Python代碼的執行速度提高到與編譯語言一樣的水平。
xmpppy Jabber服務器採用開發的XMPP協議,Google Talk也是採用XMPP協議的IM系統。在Python中有一個xmpppy模塊支持該協議。也就是說,我們可以通過該模塊與Jabber服務器通信,是不是很Cool。
PyMedia 用於多媒體操作的python模塊。它提供了豐富而簡單的接口用於多媒體處理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平臺下使用。
Pmw Python megawidgets,Python超級GUI組件集,一個在python中利用Tkinter模塊構建的高級GUI組件,每個Pmw都合併了一個或多個Tkinter組件,以實現更有用和更復雜的功能。
PyXML 用Python解析和處理XML文檔的工具包,包中的4DOM是完全相容於W3C DOM規範的。它包含以下內容:
xmlproc: 一個符合規範的XML解析器。
Expat: 一個快速的,非驗證的XML解析器。還有其他
和他同級別的還有 PyHtml PySGML
PyGame 用於多媒體開發和遊戲軟件開發的模塊。
PyOpenGL 模塊封裝了“OpenGL應用程序編程接口”,通過該模塊python程序員可在程序中集成2D和3D的圖形。
NumPy、NumArray、SAGE NumArray是Python的一個擴展庫,主要用於處理任意維數的固定類型數組,簡單說就是一個矩陣庫。它的低層代碼使用C來編寫,所以速度的優勢很明顯。SAGE是基於NumPy和其他幾個工具所整合成的數學軟件包,目標是取代Magma, Maple, Mathematica和Matlab 這類工具。
MySQLdb 用於連接MySQL數據庫。還有用於zope的ZMySQLDA模塊,通過它就可在zope中連接mysql數據庫。
Python-ldap 提供一組面向對象的API,可方便地在python中訪問ldap目錄服務,它基於OpenLDAP2.x。
smtplib 發送電子郵件。
ftplib 定義了FTP類和一些方法,用以進行客戶端的ftp編程。我們可用python編寫一個自己的ftp客戶端程序,用於下載文件或鏡像站點。如果想了解ftp協議的詳細內容,請參考RFC959。

 

開發環境

專門爲Python設計的IDE

  ●IDLE:Python內置IDE (隨python安裝包提供)

  ●Komodo和Komodo Edit:後者是前者的免費精簡版

  ●PythonWin:ActivePython或pywin32均提供該IDE,僅適用於Windows

  ●SPE(Stani's Python Editor):功能較多的自由軟件,基於wxPython

  ●Ulipad:功能較全的自由軟件,基於wxPython;作者是中國Python高手limodou

  ●WingIDE:可能是功能最全的IDE,但不是自由軟件(教育用戶和開源用戶可以申請免費key)

  ●Eric:基於PyQt的自由軟件,功能強大

  ●DrPython

有相應插件的通用IDE軟件

  ●eclipse + pydev插件:穩定性欠佳

  ●emacs:自帶python支持,自動補全、refactor等功能需要插件支持

  ●Vim: 最新7.3版編譯時可以加入python支持,提供python代碼自動提示支持

  ●Visual Studio 2003 + VisualPython:僅適用Windows,已停止維護,功能較差

  ●SlickEdit

  ●Visual Studio 2010 + Python Tools for Visual Studio

  ●TextMate

  ●Netbeans IDE

  另外,諸如EditPlusUltraEditPSPad等通用的程序員文本編輯器軟件也能對Python代碼編輯提供一定的支持,比如代碼自動着色、註釋快捷鍵等,但是否夠得上集成開發環境的水平,尚有待評估。

 

擴展閱讀:Python官網: http://www.python.org/Python擴展包: http://pypi.python.org/Python學習網站:http://woodpecker.org.cn/abyteofpython_cn/chinese/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章