1. Python的出生
1989年 Guido van Rossum開始編寫Python語言編輯器(龜叔為了打發無聊的聖誕節)
1991年 第一個Python編譯器誕生(正式誕生)
1994年 Python1.0 增加內建函式
2004年 Python204 web框架、Django
2008年 Python2.6 Python3.0(同一年出2個版本)
Python2 :原始碼不標準、混亂、重複程式碼太多吧
Python3 :標準、統一、去重
2. Python優缺點
Python語言特點:優美、簡單、清晰。
編譯型 | 解釋型 |
一次性將所有程式編譯成二進位制檔案 | 當程式執行時,一行一行的解釋 |
開發效率低,不能跨平臺 | 開發效率高,可以跨平臺 |
執行速度快 | 執行速度慢 |
C,C++等等 | python ,php等等 |
優點
-
簡單————Python是一種代表簡單主義思想的語言。Python的這種虛擬碼本質是它最大的優點之一。它使你能夠專注於解決問題而不是去搞明白語言本身。
-
易學————就如同你即將看到的一樣,Python極其容易上手,Python有極其簡單的語法。
-
免費、開源————Python是FLOSS(自由/開放原始碼軟體)之一。簡單地說,你可以自由地釋出這個軟體的拷貝、閱讀它的原始碼、對它做改動、把它的一部分用於新的自由軟體中。
-
高層語言————當你用Python語言編寫程式的時候,你無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節。
-
可移植性————由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。
-
解釋型————一個用編譯性語言比如C或C++寫的程式可以從原始檔(即C或C++語言)轉換到一個你的計算機使用的語言(二進位制程式碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。當你執行你的程式的時候,連線/轉載器軟體把你的程式從硬碟複製到記憶體中並且執行。而Python語言寫的程式不需要編譯成二進位制程式碼。你可以直接從原始碼執行程式。在計算機內部,Python直譯器把原始碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並執行。事實上,由於你不再需要擔心如何編譯程式,如何確保連線轉載正確的庫等等,所有這一切使得使用Python更加簡單。由於你只需要把你的Python程式拷貝到另外一臺計算機上,它就可以工作了,這也使得你的Python程式更加易於移植。
-
物件導向————Python既支援程式導向的程式設計也支援物件導向的程式設計。在“程式導向”的語言中,程式是由過程或僅僅是可重用程式碼的函式構建起來的。在“物件導向”的語言中,程式是由資料和功能組合而成的物件構建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強大又簡單的方式實現物件導向程式設計。
-
可擴充套件性————如果你需要你的一段關鍵程式碼執行得更快或者希望某些演算法不公開,你可以把你的部分程式用C或C++編寫,然後在你的Python程式中使用它們。
-
豐富的庫————Python標準庫確實很龐大。它可以幫助你處理各種工作,包括正規表示式、文件生成、單元測試、執行緒、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV檔案、密碼系統、GUI(圖形使用者介面)、Tk和其他與系統有關的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python的“功能齊全”理念。除了標準庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python影像庫等等。
-
規範的程式碼————Python採用強制縮排的方式使得程式碼具有極佳的可讀性。
缺點
- 執行速度,有速度要求的話,最好用C++改寫關鍵部分。
- 程式碼不能加密。
- 國內市場較小(國內以python來做主要開發的,目前只有一些web2.0公司)。但時間推移,目前很多國內軟體公司,尤其是遊戲公司,也開始規模使用。
- 中文資料匱乏(好的python中文資料屈指可數),託社群的福,有幾本優秀的教材已經被翻譯了,但入門級教材多,高階內容還是隻能看英語版。
- 構架選擇太多(沒有像C#這樣的官方.net構架,也沒有像ruby由於歷史較短,構架開發的相對集中。Ruby on Rails 構架開發中小型web程式天下無敵)。不過這也從另一個側面說明,python比較優秀,吸引的人才多,專案也多。
3.Python的應用
(1)系統程式設計
提供API(ApplicationProgrammingInterface應用程式程式設計介面),能方便進行系統維護和管理,Linux下標誌性語言之一,是很多系統管理員理想的程式設計工具。
(2)圖形處理
有PIL、Tkinter等圖形庫支援,能方便進行圖形處理。
(3)數學處理
NumPy擴充套件提供大量與許多標準數學庫的介面。
(4)文字處理
python提供的re模組能支援正規表示式,還提供SGML,XML分析模組,許多程式設計師利用python進行XML程式的開發。
(5)資料庫程式設計
程式設計師可通過遵循PythonDB-API(資料庫應用程式程式設計介面)規範的模組與MicrosoftSQLServer,Oracle,Sybase,DB2,MySQL、SQLite等資料庫通訊。python自帶有一個Gadfly模組,提供了一個完整的SQL環境。
(6)網路程式設計
提供豐富的模組支援sockets程式設計,能方便快速地開發分散式應用程式。很多大規模軟體開發計劃例如Zope,Mnet及BitTorrent.Google都在廣泛地使用它。
(7)Web程式設計
應用的開發語言,支援最新的XML技術。
(8)多媒體應用
Python的PyOpenGL模組封裝了“OpenGL應用程式程式設計介面”,能進行二維和三維影像處理。PyGame模組可用於編寫遊戲軟體。
(9)pymo引擎
PYMO全稱為pythonmemoriesoff,是一款執行於SymbianS60V3,Symbian3,S60V5,Symbian3,Android系統上的AVG遊戲引擎。因其基於python2.0平臺開發,並且適用於建立秋之回憶(memoriesoff)風格的AVG遊戲,故命名為PYMO。
(10)黑客程式設計
python有一個hack的庫,內建了你熟悉的或不熟悉的函式,但是缺少成就感。
4. 應用場景
(1)Web應用開發
Python經常被用於Web開發。比如,通過mod_wsgi模組,Apache可以執行用Python編寫的Web程式。Python定義了WSGI標準應用介面來協調Http伺服器與基於Python的Web程式之間的通訊。一些Web框架,如Django,TurboGears,web2py,Zope等,可以讓程式設計師輕鬆地開發和管理複雜的Web程式。
(2)作業系統管理、伺服器運維的自動化指令碼
在很多作業系統裡,Python是標準的系統元件。 大多數Linux發行版以及NetBSD、OpenBSD和Mac OS X都整合了Python,可以在終端下直接執行Python。有一些Linux發行版的安裝器使用Python語言編寫,比如Ubuntu的Ubiquity安裝器,Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage包管理系統。Python標準庫包含了多個呼叫作業系統功能的庫。通過pywin32這個第三方軟體 包,Python能夠訪問Windows的COM服務及其它Windows API。使用IronPython,Python程式能夠直接呼叫.Net Framework。一般說來,Python編寫的系統管理指令碼在可讀性、效能、程式碼重用度、擴充套件性幾方面都優於普通的shell指令碼。
(3)科學計算
NumPy,SciPy,Matplotlib可以讓Python程式設計師編寫科學計算程式。
(4)桌面軟體
PyQt、PySide、wxPython、PyGTK是Python快速開發桌面應用程式的利器。
(5)伺服器軟體(網路軟體)
Python對於各種網路協議的支援很完善,因此經常被用於編寫伺服器軟體、網路爬蟲。第三方庫Twisted支援非同步網路程式設計和多數標準的網路協議(包含客戶端和伺服器),並且提供了多種工具,被廣泛用於編寫高效能的伺服器軟體。
(6)遊戲
很多遊戲使用C++編寫圖形顯示等高效能模組,而使用Python或者Lua編寫遊戲的邏輯、伺服器。相較於Python,Lua的功能更簡單、體積更小;而Python則支援更多的特性和資料型別。
(7)構思實現,產品早期原型和迭代
YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。
5. 應用方向
(1)常規軟體開發
Python支援函數語言程式設計和OOP物件導向程式設計,能夠承擔任何種類軟體的開發工作,因此常規的軟體開發、指令碼編寫、網路程式設計等都屬於標配能力。
(2)科學計算
隨著NumPy,SciPy,Matplotlib,Enthoughtlibrarys等眾多程式庫的開發,Python越來越適合於做科學計算、繪製高質量的2D和3D影像。和科學計算領域最流行的商業軟體Matlab相比,Python是一門通用的程式設計語言,比Matlab所採用的指令碼語言的應用範圍更廣泛,有更多的程式庫的支援。雖然Matlab中的許多高階功能和toolbox目前還是無法替代的,不過在日常的科研開發之中仍然有很多的工作是可以用Python代勞的。
(3)自動化運維
這幾乎是Python應用的自留地,作為運維工程師首選的程式語言,Python在自動化運維方面已經深入人心,比如Saltstack和Ansible都是大名鼎鼎的自動化平臺。
(4)雲端計算
開源雲端計算解決方案OpenStack就是基於Python開發的,搞雲端計算的同學都懂的。
(5)WEB開發
基於Python的Web開發框架不要太多,比如耳熟能詳的Django,還有Tornado,Flask。其中的Python+Django架構,應用範圍非常廣,開發速度非常快,學習門檻也很低,能夠幫助你快速的搭建起可用的WEB服務。
(6)網路爬蟲
也稱網路蜘蛛,是大資料行業獲取資料的核心工具。沒有網路爬蟲自動地、不分晝夜地、高智慧地在網際網路上爬取免費的資料,那些大資料相關的公司恐怕要少四分之三。能夠編寫網路爬蟲的程式語言有不少,但Python絕對是其中的主流之一,其Scripy爬蟲框架應用非常廣泛。
(7)資料分析
在大量資料的基礎上,結合科學計算、機器學習等技術,對資料進行清洗、去重、規格化和針對性的分析是大資料行業的基石。Python是資料分析的主流語言之一。
(8)人工智慧
Python在人工智慧大範疇領域內的機器學習、神經網路、深度學習等方面都是主流的程式語言,得到廣泛的支援和應用。
6. 常識
關鍵點常識
Python的作者,Guido von Rossum,荷蘭人。
- Python的發音與拼寫
- Python的意思是蟒蛇,源於作者喜歡的一部電視劇 (C呢?)
- Python的作者是Guido van Rossum(龜叔)
- Python是龜叔在1989年聖誕節期間,為了打發無聊的聖誕節而用C編寫的一個程式語言
- Python正式誕生於1991年
- Python的直譯器如今有多個語言實現,我們常用的是CPython(官方版本的C語言實現),其他還有Jython(可以執行在Java平臺)、IronPython(可以執行在.NET和Mono平臺)、PyPy(Python實現的,支援JIT即時編譯)
- Python目前有兩個版本,Python2和Python3
- Life is shot, you need Python. 人生苦短,我用Python。