Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。 html
若是您想要更快、更系統地學會jQuery,您最好採用邊學邊練(Python微課)的學習模式。 python
Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議 。Python語法簡潔清晰,特點之一是強制用空白符(white space)做爲語句縮進。Python具備豐富和強大的庫。它常被暱稱爲膠水語言,可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆地聯結在一塊兒。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),而後對其中有特別要求的部分,用更合適的語言改寫,好比3D遊戲中的圖形渲染模塊,性能要求特別高,就能夠用C/C++重寫,然後封裝爲Python能夠調用的擴展類庫。須要注意的是在您使用擴展類庫時可能須要考慮平臺問題,某些可能不提供跨平臺的實現。 linux
Python在設計上堅持了清晰劃一的風格,這使得Python成爲一門易讀、易維護,而且被大量用戶所歡迎的、用途普遍的語言。 android
設計者開發時總的指導思想是,對於一個特定的問題,只要有一種最好的方法來解決就行了。這在由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的縮進規則。 web
一個和其餘大多數語言(如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。 sql
Python是徹底面向對象的語言。函數、模塊、數字、字符串都是對象。而且徹底支持繼承、重載、派生、多繼承,有益於加強源代碼的複用性。Python支持重載運算符和動態類型。相對於Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。有兩個標準庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程序設計工具。 shell
雖然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交互環境。直接下達操做指令便可實現交互操做。
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/二、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標準庫確實很龐大。它能夠幫助處理各類工做,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其餘與系統有關的操做。這被稱做Python的「功能齊全」理念。除了標準庫之外,還有許多其餘高質量的庫,如wxPython、Twisted和Python圖像庫等等。
12.規範的代碼:Python採用強制縮進的方式使得代碼具備較好可讀性。而Python語言寫的程序不須要編譯成二進制代碼。
1.單行語句和命令行輸出問題:不少時候不能將程序連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,能夠較爲方便的在shell下完成簡單程序,不須要如Python同樣,必須將程序寫入一個.py文件。
2.獨特的語法:這也許不該該被稱爲侷限,可是它用縮進來區分語句關係的方式仍是給不少初學者帶來了困惑。即使是頗有經驗的Python程序員,也可能陷入陷阱當中。最多見的狀況是tab和空格的混用會致使錯誤,而這是用肉眼沒法分別的。
3.運行速度慢:這裏是指與C和C++相比。
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標準庫提供了系統管理、網絡通訊、文本處理、數據庫接口、圖形系統、XML處理等額外的功能。Python標準庫命名接口清晰、文檔良好,很容易學習和使用。
Python社區提供了大量的第三方模塊,使用方式與標準庫相似。它們的功能無所不包,覆蓋科學計算、Web開發、數據庫接口、圖形系統多個領域,而且大多成熟而穩定。第三方模塊可使用Python或者C語言編寫。SWIG,SIP經常使用於將C語言編寫的程序庫轉化爲Python模塊。Boost C++ Libraries包含了一組庫,Boost.Python,使得以 Python 或 C++ 編寫的程序能互相調用。藉助於擁有基於標準庫的大量工具、可以使用低級語言如C和能夠做爲其餘庫接口的C++,Python已成爲一種強大的應用於其餘語言與工具之間的膠水語言。
Python標準庫的主要功能有:
1.文本處理,包含文本格式化、正則表達式匹配、文本差別計算與合併、Unicode支持,二進制數據處理等功能
2.文件處理,包含文件操做、建立臨時文件、文件壓縮與歸檔、操做配置文件等功能
3.操做系統功能,包含線程與進程支持、IO複用、日期與時間處理、調用系統函數、寫日記(logging)等功能
4.網絡通訊,包含網絡套接字,SSL加密通訊、異步網絡通訊等功能
5.網絡協議,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多種網絡協議,並提供了編寫網絡服務器的框架W3C格式支持,包含HTML,SGML,XML的處理。
6.其它功能,包括國際化支持、數學運算、HASH、Tkinter等
API文檔:https://docs.python.org/3/