標籤:c/c++ lips google 基礎 設計師 django 非同步 重載運算子 運算子
Python是什麼?
Python(英國發音:/?pa?θ?n/ 美國發音:/?pa?θɑ?n/), 是一種物件導向的解釋型電腦程式設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。
如果您想要更快、更系統地學會jQuery,您最好採用邊學邊練(Python微課)的學習模式。
Python是純粹的自由軟體, 原始碼和解譯器CPython遵循 GPL(GNU General Public License)協議 。Python文法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮排。Python具有豐富和強大的庫。它常被暱稱為膠水語言,能夠把用其他語言製作的各種模組(尤其是C/C++)很輕鬆地連接在一起。常見的一種應用情形是,使用Python快速產生程式的原型(有時甚至是程式的最終介面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D遊戲中的圖形渲染模組,效能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴充類庫。需要注意的是在您使用擴充類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
Python編碼風格
Python在設計上堅持了清晰劃一的風格,這使得Python成為一門易讀、易維護,並且被大量使用者所歡迎的、用途廣泛的語言。
設計者開發時總的指導思想是,對於一個特定的問題,只要有一種最好的方法來解決就好了。這在由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)完全相反。
Python的作者有意的設計限制性很強的文法,使得不好的編程習慣(例如if語句的下一行不向右縮排)都不能通過編譯。其中很重要的一項就是Python的縮排規則。
一個和其他大多數語言(如C)的區別就是,一個模組的界限,完全是由每行的首字元在這一行的位置來決定的(而C語言是用一對花括弧{}來明確的定出模組的邊界的,與字元的位置毫無關係)。這一點曾經引起過爭議。因為自從C這類的語言誕生後,語言的文法含義與字元的相片順序分離開來,曾經被認為是一種程式語言的進步。不過不可否認的是,通過強製程序員們縮排(包括if,for和函數定義等所有需要使用模組的地方),Python確實使得程式更加清晰和美觀。 設計定位
Python的設計哲學是“優雅”、“明確”、“簡單”。因此,Perl語言中“總是有多種方法來做同一件事”的理念在Python開發人員中通常是難以忍受的。Python開發人員的哲學是“用一種方法,最好是只有一種方法來做一件事”。在設計Python語言時,如果面臨多種選擇,Python開發人員一般會拒絕花俏的文法,而選擇明確的沒有或者很少有歧義的文法。由於這種設計觀念的差異,Python原始碼通常被認為比Perl具備更好的可讀性,並且能夠支撐大規模的軟體開發。這些準則被稱為Python格言。在Python解譯器內運行import this可以獲得完整的列表。
Python開發人員盡量避開不成熟或者不重要的最佳化。一些針對非重要部位的加快運行速度的補丁通常不會被合并到Python內。所以很多人認為Python很慢。不過,根據二八定律,大多數程式對速度要求不高。在某些對運行速度要求很高的情況,Python設計師傾向於使用JIT技術,或者用使用C/C++語言改寫這部分程式。可用的JIT技術是PyPy。
Python是完全物件導向的語言。函數、模組、數字、字串都是對象。並且完全支援繼承、重載、派生、多繼承,有益於增強原始碼的複用性。Python支援重載運算子和動態類型。相對於Lisp這種傳統的函數式程式設計語言,Python對函數式設計只提供了有限的支援。有兩個標準庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程式設計工具。
雖然Python可能被粗略地分類為“指令碼語言”(script language),但實際上一些大規模軟體開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支援者較喜歡稱它為一種進階動態程式設計語言,原因是“指令碼語言”泛指僅作簡單程式設計任務的語言,如shellscript、VBScript等只能處理簡單任務的程式設計語言,並不能與Python相提並論。
Python本身被設計為可擴充的。並非所有的特性和功能都整合到語言核心。Python提供了豐富的API和工具,以便程式員能夠輕鬆地使用C語言、C++、Cython來編寫擴充模組。Python編譯器本身也可以被整合到其它需要指令碼語言的程式內。因此,很多人還把Python作為一種“膠水語言”(glue language)使用。使用Python將其他語言編寫的程式進行整合和封裝。在Google內部的很多項目,例如Google Engine使用C++編寫效能要求極高的部分,然後用Python或Java/Go調用相應的模組。《Python技術手冊》的作者馬特利(Alex Martelli)說:“這很難講,不過,2004 年,Python 已在Google 內部使用,Google 召募許多 Python 高手,但在這之前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬體的場合使用 C++,在快速開發時候使用 Python。” 執行
Python在執行時,首先會將.py檔案中的原始碼編譯成Python的byte code(位元組碼),然後再由Python Virtual Machine(Python虛擬機器)來執行這些編譯好的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還可以以互動模式運行,比如主流作業系統Unix/Linux、Mac、Windows都可以直接在命令模式下直接運行Python互動環境。直接下達操作指令即可實現互動操作。 Python優點
1.簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程式就感覺像是在讀英語一樣。它使你能夠專註於解決問題而不是去搞明白語言本身。
2.易學:Python極其容易上手,因為Python有極其簡單的說明文檔[5] 。
3.速度快:Python 的底層是用 C 語言寫的,很多標準庫和第三方庫也都是用 C 寫的,運行速度非常快。
4.免費、開源:Python是FLOSS(自由/開放源碼軟體)之一。使用者可以自由地發布這個軟體的拷貝、閱讀它的原始碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。
5.高層語言:用Python語言編寫程式的時候無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節。
6.可移植性:由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。這些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平台。
7.解釋性:一個用編譯性語言比如C或C++寫的程式可以從源檔案(即C或C++語言)轉換到一個你的電腦使用的語言(二進位代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。運行程式的時候,串連/轉載器軟體把你的程式從硬碟複製到記憶體中並且運行。而Python語言寫的程式不需要編譯成二進位代碼。你可以直接從原始碼運行 程式。在電腦內部,Python解譯器把原始碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成電腦使用的機器語言並運行。這使得使用Python更加簡單。也使得Python程式更加易於移植。
8.物件導向:Python既支援面向過程的編程也支援物件導向的編程。在“面向過程”的語言中,程式是由過程或僅僅是可重用代碼的函數構建起來的。在“物件導向”的語言中,程式是由資料和功能組合而成的對象構建起來的。
9.可擴充性:如果需要一段關鍵代碼運行得更快或者希望某些演算法不公開,可以部分程式用C或C++編寫,然後在Python程式中使用它們。
10.可嵌入性:可以把Python嵌入C/C++程式,從而向程式使用者提供指令碼功能。
11.豐富的庫:Python標準庫確實很龐大。它可以協助處理各種工作,包括Regex、文檔產生、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV檔案、密碼系統、GUI(圖形化使用者介面)、Tk和其他與系統有關的操作。這被稱作Python的“功能齊全”理念。除了標準庫以外,還有許多其他高品質的庫,如wxPython、Twisted和Python映像庫等等。
12.規範的代碼:Python採用強制縮排的方式使得代碼具有較好可讀性。而Python語言寫的程式不需要編譯成二進位代碼。 Python缺點
1.單行語句和命令列輸出問題:很多時候不能將程式連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,可以較為方便的在shell下完成簡單程式,不需要如Python一樣,必須將程式寫入一個.py檔案。
2.獨特的文法:這也許不應該被稱為局限,但是它用縮排來區分語句關係的方式還是給很多初學者帶來了困惑。即便是很有經驗的Python程式員,也可能陷入陷阱當中。最常見的情況是tab和空格的混用會導致錯誤,而這是用肉眼無法分別的。
3.運行速度慢:這裡是指與C和C++相比。 Python 工具
1.Tkinter:Python預設的圖形介面介面。Tkinter是一個和Tk介面的Python模組,Tkinter庫提供了對Tk API的介面,它屬於Tcl/Tk的GUI工具組。
2.PyGTK:用於python GUI程式開發的GTK+庫。GTK就是用來實現GIMP和Gnome的庫。
3.PyQt:用於python的Qt開發庫。QT就是實現了KDE環境的那個庫,由一系列的模組組成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300個類和超過5750個的函數和方法。PyQt還支援一個叫qtext的模組,它包含一個QScintilla庫。該庫是Scintillar編輯器類的Qt介面。
4.wxPython:GUI編程架構,熟悉MFC的人會非常喜歡,簡直是同一架構(對於初學者或者對設計要求不高的使用者來說,使用Boa Constructor可以方便迅速的進行wxPython的開發)
5.PIL:python提供強大的圖形處理的能力,並提供廣泛的圖形檔案格式支援,該庫能進行圖形格式的轉換、列印和顯示。還能進行一些圖形效果的處理,形的放大、縮小和旋轉等。是Python使用者進行圖象處理的強有力工具。
6.Psyco:一個Python代碼加速度器,可使Python代碼的執行速度提高到與編譯語言一樣的水平。
7.xmpppy:Jabber伺服器採用開發的XMPP協議,Google Talk也是採用XMPP協議的IM系統。在Python中有一個xmpppy模組支援該協議。也就是說,我們可以通過該模組與Jabber伺服器通訊,是不是很Cool。
8.PyMedia:用於多媒體操作的python模組。它提供了豐富而簡單的介面用於多媒體處理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。
9.Pmw:Python megawidgets,Python超級GUI組件集,一個在python中利用Tkinter模組構建的進階GUI組件,每個Pmw都合并了一個或多個Tkinter組件,以實現更有用和更複雜的功能。
10.PyXML:用Python解析和處理XML文檔的工具包,包中的4DOM是完全相容於W3C DOM規範的。它包含以下內容: Python 標準庫
Python擁有一個強大的標準庫。Python語言的核心只包含數字、字串、列表、字典、檔案等常見類型和函數,而由Python標準庫提供了系統管理、網路通訊、文本處理、資料庫介面、圖形系統、XML處理等額外的功能。Python標準庫命名介面清晰、文檔良好,很容易學習和使用。
Python社區提供了大量的第三方模組,使用方式與標準庫類似。它們的功能無所不包,覆蓋科學計算、Web開發、資料庫介面、圖形系統多個領域,並且大多成熟而穩定。第三方模組可以使用Python或者C語言編寫。SWIG,SIP常用於將C語言編寫的程式庫轉化為Python模組。Boost C++ Libraries包含了一組庫,Boost.Python,使得以 Python 或 C++ 編寫的程式能互相調用。藉助於擁有基於標準庫的大量工具、能夠使用低級語言如C和可以作為其他庫介面的C++,Python已成為一種強大的應用於其他語言與工具之間的膠水語言。
Python標準庫的主要功能有:
1.文本處理,包含文字格式設定化、Regex匹配、文本差異計算與合并、Unicode支援,位元據處理等功能
2.檔案處理,包含檔案操作、建立臨時檔案、檔案壓縮與歸檔、操作設定檔等功能
3.作業系統功能,包含線程與進程支援、IO複用、日期與時間處理、調用系統函數、寫日記(logging)等功能
4.網路通訊,包含網路通訊端,SSL加密通訊、非同步網路通訊等功能
5.網路通訊協定,支援HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多種網路通訊協定,並提供了編寫網路伺服器的架構W3C格式支援,包含HTML,SGML,XML的處理。
6.其它功能,包括國際化支援、數學運算、HASH、Tkinter等 Python 開發環境
- IDLE:Python內建IDE (隨python安裝包提供)
- PyCharm :由著名的JetBrains公司開發,帶有一整套可以協助使用者在使用Python語言開發時提高其效率的工 具,比如調試、文法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些進階功能,以用於支援Django架構下的專業Web開發。
- Komodo和Komodo Edit:後者是前者的免費精簡版
- PythonWin:ActivePython或pywin32均提供該IDE,僅適用於Windows
- SPE(Stani‘s Python Editor):功能較多的自由軟體,基於wxPython
- Ulipad:功能較全的自由軟體,基於wxPython;作者是中國Python高手limodou
- WingIDE:可能是功能最全的IDE,但不是自由軟體(教育使用者和開源使用者可以申請免費key)
- Eric:基於PyQt的自由軟體,功能強大。全名是:The Eric Python IDE
- DrPython
- PyScripter:使用Delphi開發的輕量級的開源Python IDE, 支援Python2.6和3.0。
- PyPE:一個開源的跨平台的PythonIDE。
- bpython: 類Unix作業系統下使用curses庫開發的輕量級的Python解譯器。文法提示功能。
- 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
- Sublime
Python 著名應用
- Pylons-Web應用程式框架
- Zope- 應用伺服器
- Plone- 內容管理系統
- Django- 鼓勵快速開發的Web應用程式框架
- Uliweb- 國人開發的輕量級Web架構
- TurboGears- 另一個Web應用快速開發架構
- Twisted--Python的網路應用程式架構
- Python Wikipedia Robot Framework- MediaWiki的機器人程式
- MoinMoinWiki- Python寫成的Wiki程式
- flask- Python 微Web架構
- tornado- 非阻塞式伺服器
- Webpy- Python 微Web架構
- Bottle- Python 微Web架構
- EVE- 網路遊戲EVE大量使用Python進行開發
- Reddit - 社交分享網站
- Dropbox - 檔案分享服務
- Pylons - Web應用程式框架
- TurboGears - 另一個Web應用快速開發架構
- Fabric - 用於管理成百上千台Linux主機的程式庫
- Trac - 使用Python編寫的BUG管理系統
- Mailman - 使用Python編寫的郵件清單軟體
- Mezzanine - 基於Django編寫的內容管理系統
- Blender - 以C與Python開發的開源3D繪圖軟體
附加資料
官網:https://www.python.org/
API文檔:https://docs.python.org/3/
下載:https://www.python.org/downloads/
教程:http://www.w3cschool.cn/python/python-tutorial.html
python基礎教程