Python 是一種面向?qū)ο蟆⒔忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言。
Python(英國發(fā)音:/?pa?θ?n/ 美國發(fā)音:/?pa?θɑ?n/), 是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言,由荷蘭人Guido van Rossum于1989年發(fā)明,第一個(gè)公開發(fā)行版發(fā)行于1991年。
如果您想要更快、更系統(tǒng)地學(xué)會(huì)Python,您最好采用邊學(xué)邊練(Python微課)的學(xué)習(xí)模式。
如果您覺得Python的學(xué)習(xí)難度較高,不易理解,可以采用更易于理解的視頻教程進(jìn)行學(xué)習(xí):Python視頻課程
Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協(xié)議 。Python語法簡潔清晰,特色之一是強(qiáng)制用空白符(white space)作為語句縮進(jìn)。Python具有豐富和強(qiáng)大的庫。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對(duì)其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴(kuò)展類庫。需要注意的是在您使用擴(kuò)展類庫時(shí)可能需要考慮平臺(tái)問題,某些可能不提供跨平臺(tái)的實(shí)現(xiàn)。
Python在設(shè)計(jì)上堅(jiān)持了清晰劃一的風(fēng)格,這使得Python成為一門易讀、易維護(hù),并且被大量用戶所歡迎的、用途廣泛的語言。
設(shè)計(jì)者開發(fā)時(shí)總的指導(dǎo)思想是,對(duì)于一個(gè)特定的問題,只要有一種最好的方法來解決就好了。這在由Tim Peters寫的Python格言(稱為The Zen of Python)里面表述為:There should be one-- and preferably only one --obvious way to do it. 這正好和Perl語言(另一種功能類似的高級(jí)動(dòng)態(tài)語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。
Python的作者有意的設(shè)計(jì)限制性很強(qiáng)的語法,使得不好的編程習(xí)慣(例如if語句的下一行不向右縮進(jìn))都不能通過編譯。其中很重要的一項(xiàng)就是Python的縮進(jìn)規(guī)則。
一個(gè)和其他大多數(shù)語言(如C)的區(qū)別就是,一個(gè)模塊的界限,完全是由每行的首字符在這一行的位置來決定的(而C語言是用一對(duì)花括號(hào){}來明確的定出模塊的邊界的,與字符的位置毫無關(guān)系)。這一點(diǎn)曾經(jīng)引起過爭議。因?yàn)樽詮腃這類的語言誕生后,語言的語法含義與字符的排列方式分離開來,曾經(jīng)被認(rèn)為是一種程序語言的進(jìn)步。不過不可否認(rèn)的是,通過強(qiáng)制程序員們縮進(jìn)(包括if,for和函數(shù)定義等所有需要使用模塊的地方),Python確實(shí)使得程序更加清晰和美觀。
Python的設(shè)計(jì)哲學(xué)是“優(yōu)雅”、“明確”、“簡單”。因此,Perl語言中“總是有多種方法來做同一件事”的理念在Python開發(fā)者中通常是難以忍受的。Python開發(fā)者的哲學(xué)是“用一種方法,最好是只有一種方法來做一件事”。在設(shè)計(jì)Python語言時(shí),如果面臨多種選擇,Python開發(fā)者一般會(huì)拒絕花俏的語法,而選擇明確的沒有或者很少有歧義的語法。由于這種設(shè)計(jì)觀念的差異,Python源代碼通常被認(rèn)為比Perl具備更好的可讀性,并且能夠支撐大規(guī)模的軟件開發(fā)。這些準(zhǔn)則被稱為Python格言。在Python解釋器內(nèi)運(yùn)行import this可以獲得完整的列表。
Python開發(fā)人員盡量避開不成熟或者不重要的優(yōu)化。一些針對(duì)非重要部位的加快運(yùn)行速度的補(bǔ)丁通常不會(huì)被合并到Python內(nèi)。所以很多人認(rèn)為Python很慢。不過,根據(jù)二八定律,大多數(shù)程序?qū)λ俣纫蟛桓?。在某些?duì)運(yùn)行速度要求很高的情況,Python設(shè)計(jì)師傾向于使用JIT技術(shù),或者用使用C/C++語言改寫這部分程序。可用的JIT技術(shù)是PyPy。
Python是完全面向?qū)ο蟮恼Z言。函數(shù)、模塊、數(shù)字、字符串都是對(duì)象。并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。Python支持重載運(yùn)算符和動(dòng)態(tài)類型。相對(duì)于Lisp這種傳統(tǒng)的函數(shù)式編程語言,Python對(duì)函數(shù)式設(shè)計(jì)只提供了有限的支持。有兩個(gè)標(biāo)準(zhǔn)庫(functools, itertools)提供了Haskell和Standard ML中久經(jīng)考驗(yàn)的函數(shù)式程序設(shè)計(jì)工具。
雖然Python可能被粗略地分類為“腳本語言”(script language),但實(shí)際上一些大規(guī)模軟件開發(fā)計(jì)劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者較喜歡稱它為一種高級(jí)動(dòng)態(tài)編程語言,原因是“腳本語言”泛指僅作簡單程序設(shè)計(jì)任務(wù)的語言,如shellscript、VBScript等只能處理簡單任務(wù)的編程語言,并不能與Python相提并論。
Python本身被設(shè)計(jì)為可擴(kuò)充的。并非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語言、C++、Cython來編寫擴(kuò)充模塊。Python編譯器本身也可以被集成到其它需要腳本語言的程序內(nèi)。因此,很多人還把Python作為一種“膠水語言”(glue language)使用。使用Python將其他語言編寫的程序進(jìn)行集成和封裝。在Google內(nèi)部的很多項(xiàng)目,例如Google Engine使用C++編寫性能要求極高的部分,然后用Python或Java/Go調(diào)用相應(yīng)的模塊?!禤ython技術(shù)手冊(cè)》的作者馬特利(Alex Martelli)說:“這很難講,不過,2004 年,Python 已在Google 內(nèi)部使用,Google 召募許多 Python 高手,但在這之前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬件的場(chǎng)合使用 C++,在快速開發(fā)時(shí)候使用 Python。”
Python在執(zhí)行時(shí),首先會(huì)將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine(Python虛擬機(jī))來執(zhí)行這些編譯好的byte code。這種機(jī)制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級(jí)的Virtual Machine。這里的高級(jí)并不是通常意義上的高級(jí),不是說Python的Virtual Machine比Java或.NET的功能更強(qiáng)大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實(shí)機(jī)器的距離更遠(yuǎn)?;蛘呖梢赃@么說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。
基于C的Python編譯出的字節(jié)碼文件,通常是.pyc格式。
除此之外,Python還可以以交互模式運(yùn)行,比如主流操作系統(tǒng)Unix/Linux、Mac、Windows都可以直接在命令模式下直接運(yùn)行Python交互環(huán)境。直接下達(dá)操作指令即可實(shí)現(xiàn)交互操作。
1.簡單:Python是一種代表簡單主義思想的語言。閱讀一個(gè)良好的Python程序就感覺像是在讀英語一樣。它使你能夠?qū)W⒂诮鉀Q問題而不是去搞明白語言本身。
2.易學(xué):Python極其容易上手,因?yàn)镻ython有極其簡單的說明文檔[5] 。
3.速度快:Python 的底層是用 C 語言寫的,很多標(biāo)準(zhǔn)庫和第三方庫也都是用 C 寫的,運(yùn)行速度非??臁?/p>
4.免費(fèi)、開源:Python是FLOSS(自由/開放源碼軟件)之一。使用者可以自由地發(fā)布這個(gè)軟件的拷貝、閱讀它的源代碼、對(duì)它做改動(dòng)、把它的一部分用于新的自由軟件中。FLOSS是基于一個(gè)團(tuán)體分享知識(shí)的概念。
5.高層語言:用Python語言編寫程序的時(shí)候無需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)。
6.可移植性:由于它的開源本質(zhì),Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過改動(dòng)使它能夠工作在不同平臺(tái)上)。這些平臺(tái)包括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開發(fā)的android平臺(tái)。
7.解釋性:一個(gè)用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉(zhuǎn)換到一個(gè)你的計(jì)算機(jī)使用的語言(二進(jìn)制代碼,即0和1)。這個(gè)過程通過編譯器和不同的標(biāo)記、選項(xiàng)完成。運(yùn)行程序的時(shí)候,連接/轉(zhuǎn)載器軟件把你的程序從硬盤復(fù)制到內(nèi)存中并且運(yùn)行。而Python語言寫的程序不需要編譯成二進(jìn)制代碼。你可以直接從源代碼運(yùn)行 程序。在計(jì)算機(jī)內(nèi)部,Python解釋器把源代碼轉(zhuǎn)換成稱為字節(jié)碼的中間形式,然后再把它翻譯成計(jì)算機(jī)使用的機(jī)器語言并運(yùn)行。這使得使用Python更加簡單。也使得Python程序更加易于移植。
8.面向?qū)ο螅篜ython既支持面向過程的編程也支持面向?qū)ο蟮木幊?。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構(gòu)建起來的。在“面向?qū)ο蟆钡恼Z言中,程序是由數(shù)據(jù)和功能組合而成的對(duì)象構(gòu)建起來的。
9.可擴(kuò)展性:如果需要一段關(guān)鍵代碼運(yùn)行得更快或者希望某些算法不公開,可以部分程序用C或C++編寫,然后在Python程序中使用它們。
10.可嵌入性:可以把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。
11.豐富的庫:Python標(biāo)準(zhǔn)庫確實(shí)很龐大。它可以幫助處理各種工作,包括正則表達(dá)式、文檔生成、單元測(cè)試、線程、數(shù)據(jù)庫、網(wǎng)頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關(guān)的操作。這被稱作Python的“功能齊全”理念。除了標(biāo)準(zhǔn)庫以外,還有許多其他高質(zhì)量的庫,如wxPython、Twisted和Python圖像庫等等。
12.規(guī)范的代碼:Python采用強(qiáng)制縮進(jìn)的方式使得代碼具有較好可讀性。而Python語言寫的程序不需要編譯成二進(jìn)制代碼。
1.單行語句和命令行輸出問題:很多時(shí)候不能將程序連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,可以較為方便的在shell下完成簡單程序,不需要如Python一樣,必須將程序?qū)懭胍粋€(gè).py文件。
2.獨(dú)特的語法:這也許不應(yīng)該被稱為局限,但是它用縮進(jìn)來區(qū)分語句關(guān)系的方式還是給很多初學(xué)者帶來了困惑。即便是很有經(jīng)驗(yàn)的Python程序員,也可能陷入陷阱當(dāng)中。最常見的情況是tab和空格的混用會(huì)導(dǎo)致錯(cuò)誤,而這是用肉眼無法分別的。
3.運(yùn)行速度慢:這里是指與C和C++相比。
1.Tkinter:Python默認(rèn)的圖形界面接口。Tkinter是一個(gè)和Tk接口的Python模塊,Tkinter庫提供了對(duì)Tk API的接口,它屬于Tcl/Tk的GUI工具組。
2.PyGTK:用于python GUI程序開發(fā)的GTK+庫。GTK就是用來實(shí)現(xiàn)GIMP和Gnome的庫。
3.PyQt:用于python的Qt開發(fā)庫。QT就是實(shí)現(xiàn)了KDE環(huán)境的那個(gè)庫,由一系列的模塊組成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300個(gè)類和超過5750個(gè)的函數(shù)和方法。PyQt還支持一個(gè)叫qtext的模塊,它包含一個(gè)QScintilla庫。該庫是Scintillar編輯器類的Qt接口。
4.wxPython:GUI編程框架,熟悉MFC的人會(huì)非常喜歡,簡直是同一架構(gòu)(對(duì)于初學(xué)者或者對(duì)設(shè)計(jì)要求不高的用戶來說,使用Boa Constructor可以方便迅速的進(jìn)行wxPython的開發(fā))
5.PIL:python提供強(qiáng)大的圖形處理的能力,并提供廣泛的圖形文件格式支持,該庫能進(jìn)行圖形格式的轉(zhuǎn)換、打印和顯示。還能進(jìn)行一些圖形效果的處理,如圖形的放大、縮小和旋轉(zhuǎn)等。是Python用戶進(jìn)行圖象處理的強(qiáng)有力工具。
6.Psyco:一個(gè)Python代碼加速度器,可使Python代碼的執(zhí)行速度提高到與編譯語言一樣的水平。
7.xmpppy:Jabber服務(wù)器采用開發(fā)的XMPP協(xié)議,Google Talk也是采用XMPP協(xié)議的IM系統(tǒng)。在Python中有一個(gè)xmpppy模塊支持該協(xié)議。也就是說,我們可以通過該模塊與Jabber服務(wù)器通信,是不是很Cool。
8.PyMedia:用于多媒體操作的python模塊。它提供了豐富而簡單的接口用于多媒體處理(wav, mp3, ogg, avi, divx, dvd, cdda etc)??稍赪indows和Linux平臺(tái)下使用。
9.Pmw:Python megawidgets,Python超級(jí)GUI組件集,一個(gè)在python中利用Tkinter模塊構(gòu)建的高級(jí)GUI組件,每個(gè)Pmw都合并了一個(gè)或多個(gè)Tkinter組件,以實(shí)現(xiàn)更有用和更復(fù)雜的功能。
10.PyXML:用Python解析和處理XML文檔的工具包,包中的4DOM是完全相容于W3C DOM規(guī)范的。它包含以下內(nèi)容:
Python擁有一個(gè)強(qiáng)大的標(biāo)準(zhǔn)庫。Python語言的核心只包含數(shù)字、字符串、列表、字典、文件等常見類型和函數(shù),而由Python標(biāo)準(zhǔn)庫提供了系統(tǒng)管理、網(wǎng)絡(luò)通信、文本處理、數(shù)據(jù)庫接口、圖形系統(tǒng)、XML處理等額外的功能。Python標(biāo)準(zhǔn)庫命名接口清晰、文檔良好,很容易學(xué)習(xí)和使用。
Python社區(qū)提供了大量的第三方模塊,使用方式與標(biāo)準(zhǔn)庫類似。它們的功能無所不包,覆蓋科學(xué)計(jì)算、Web開發(fā)、數(shù)據(jù)庫接口、圖形系統(tǒng)多個(gè)領(lǐng)域,并且大多成熟而穩(wěn)定。第三方模塊可以使用Python或者C語言編寫。SWIG,SIP常用于將C語言編寫的程序庫轉(zhuǎn)化為Python模塊。Boost C++ Libraries包含了一組庫,Boost.Python,使得以 Python 或 C++ 編寫的程序能互相調(diào)用。借助于擁有基于標(biāo)準(zhǔn)庫的大量工具、能夠使用低級(jí)語言如C和可以作為其他庫接口的C++,Python已成為一種強(qiáng)大的應(yīng)用于其他語言與工具之間的膠水語言。
Python標(biāo)準(zhǔn)庫的主要功能有:
1.文本處理,包含文本格式化、正則表達(dá)式匹配、文本差異計(jì)算與合并、Unicode支持,二進(jìn)制數(shù)據(jù)處理等功能
2.文件處理,包含文件操作、創(chuàng)建臨時(shí)文件、文件壓縮與歸檔、操作配置文件等功能
3.操作系統(tǒng)功能,包含線程與進(jìn)程支持、IO復(fù)用、日期與時(shí)間處理、調(diào)用系統(tǒng)函數(shù)、寫日記(logging)等功能
4.網(wǎng)絡(luò)通信,包含網(wǎng)絡(luò)套接字,SSL加密通信、異步網(wǎng)絡(luò)通信等功能
5.網(wǎng)絡(luò)協(xié)議,支持HTTP,F(xiàn)TP,SMTP,POP,IMAP,NNTP,XMLRPC等多種網(wǎng)絡(luò)協(xié)議,并提供了編寫網(wǎng)絡(luò)服務(wù)器的框架W3C格式支持,包含HTML,SGML,XML的處理。
6.其它功能,包括國際化支持、數(shù)學(xué)運(yùn)算、HASH、Tkinter等
官網(wǎng):https://www.python.org/
API文檔:https://docs.python.org/3/
下載:https://www.python.org/downloads/
教程:http://o2fo.com/python/python-tutorial.html
掃描下方二維碼或打開微信搜一搜“w3cschool編程獅”關(guān)注公眾號(hào)回復(fù)關(guān)鍵詞【Python123】或者【Python資料包】免費(fèi)領(lǐng)取 Python 學(xué)習(xí)資料,包含軟件安裝包,思維導(dǎo)圖等