本篇剛要
- Python的誕生
- Python的應用領域
- Python的優缺點
- Python的解釋器
- Python的發展史
- Python2 or Python3?
1、 Python的歷史
Python的創始人吉多·範羅蘇姆(Guido van Rossum,龜叔),Guido接觸並使用過諸如Pascal、C、Fortran等語言。這些語言的基本設計原則是讓機器能更快運行。在80年代,雖然IBM和蘋果已經掀起了我的電腦浪潮,但這些我的電腦的配置很低。好比早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個大的數組就能佔滿內存。全部的編譯器的核心是作優化,以便讓程序可以運行。爲了增進效率,語言也迫使程序員像計算機同樣思考,以便能寫出更符合機器口味的程序。python
Guido知道如何用C語言寫出一個功能,但整個編寫過程須要耗費大量的時間,即便他已經準確的知道了如何實現。他的另外一個選擇是shell。Bourne Shell做爲UNIX系統的解釋器已經長期存在。UNIX的管理員們經常用shell去寫一些簡單的腳本,以進行一些系統維護的工做,好比按期備份、文件系統管理等等。shell能夠像膠水同樣,將UNIX下的許多功能鏈接在一塊兒。許多C語言下上百行的程序,在shell下只用幾行就能夠完成。然而,shell的本質是調用命令。它並非一個真正的語言。好比說,shell沒有數值型的數據類型,加法運算都很複雜。總之,shell不能全面的調動計算機的功能。程序員
Guido但願有一種語言,這種語言可以像C語言那樣,可以全面調用計算機的功能接口,又能夠像shell那樣,能夠輕鬆的編程。ABC語言讓Guido看到但願。ABC是由荷蘭的數學和計算機研究所開發的。Guido在該研究所工做,並參與到ABC語言的開發。ABC語言以教學爲目的。與當時的大部分語言不一樣,ABC語言的目標是「讓用戶感受更好」。ABC語言但願讓語言變得容易閱讀,容易使用,容易記憶,容易學習,並以此來激發人們學習編程的興趣。web
1989年,爲了打發聖誕節假期,Guido開始寫Python語言的編譯器,Python正式誕生於1991年。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。Guido做爲一個語言設計愛好者,已經有過設計語言的嘗試。最初的Python徹底由Guido本人開發。Python獲得Guido同事的歡迎。他們迅速的反饋使用意見,並參與到Python的改進。Guido和一些同事構成Python的核心團隊。他們將本身大部分的業餘時間用於hack Python。隨後,Python拓展到研究所以外。Python將許多機器層面上的細節隱藏,交給編譯器處理,並凸顯出邏輯層面的編程思考。Python程序員能夠花更多的時間用於思考程序的邏輯,而不是具體的實現細節。這一特徵吸引了廣大的程序員。 算法
截止至2016年7月,python在TIOBE流行編程語言排行榜,已經上升到第四名。而且從趨勢圖中能夠看出其還在呈增加趨勢。shell

2、Python的應用領域
- 數據分析: 2016/2月/11,美國科學家宣佈發現引力波,分析觀測30年的數據。分析引力波數據的Python包:GWPY
- 雲計算 : 典型應用——Python開發的OpenStack
- WEB開發: 衆多優秀的WEB框架,Django、flask、 tornado
- 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas。
- 系統運維: 運維人員必備,slatstack(系統自動化配置和管理工具),Ansible(自動化運維工具)
- 圖形開發: wxPython、PyQT、TKinter
- 而且愈來愈多的公司選在python做爲其主要開發語言,例如:
- Google - Google Groups、Gmail、Google Maps、AlphaGo等,Google App Engine支持python做爲開發語言
- NASA - 美國宇航局,從1994年起把python做爲主要開發語言
- Dropbox - 美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
- 豆瓣網 - 圖書、唱片、電影等文化產品的資料數據庫網站
- BitTorrent - bt下載軟件客戶端
- gedit - Linux平臺的文本編輯器
- GIMP - Linux平臺的圖像處理軟件(Linux下的PS)
- 知乎(國外的Quora) - 社交問答網站,國內最大的問答社區,經過Python開發
- Autodesk Maya - 3D建模軟件,支持python做爲腳本語言
- YouTube:世界上最大的視頻網站YouTube就是用Python開發的
- Facebook:大量的基礎庫均經過Python實現的
- Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。數據庫
3、Python的優缺點
優勢:
- Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python不但入門容易,並且未來深刻下去,能夠編寫那些很是複雜的程序。
- 開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
- 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
- 可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
- 可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
- 可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能
缺點:
- 代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以明文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
- 多線程支持很差
- Python相對C語言確實慢不少,但其實這裏所指的速度慢在大多數時候咱們是沒法感知的,好比說,是用C語言程序開發了一個程序,執行須要花0.01秒,使用Python實現一樣功能的程序,須要花0.1秒的時間,雖然相差10倍,可是咱們基本是感知不到的。更多的時候,程序慢是程序員實現功能方式致使的。就好像開罐頭的時候,有的人用牙咬,有的人用工具,這樣兩我的的效率相比起來就差了不少。
4、Python的解釋器
- Cpython——Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
- Jython——Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
- IronPython——Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
- PyPy——Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。此編輯器可以大大加快Python程序的運行速度,可能會是Python的將來。
- RubyPython、Brython ...
- Python的解釋器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是經過網絡調用來交互,確保各程序之間的獨立性。
5、Python發展史
1989年的聖誕節,Guido開始編寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。編程
1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。flask
- Python 1.0 - January 1994 增長了 lambda, map, filter and reduce.
- 1999年 Python的web框架之祖——Zope 1發佈
- Python 2.0 - 2000/10/16,加入了內存回收機制,構成了如今Python語言框架的基礎
- Python 2.4 – 2004/11/30, 同年目前最流行的WEB框架Django 誕生
- Python 2.5 - 2006/09/19
- Python 2.6 - 2008/10/1
- Python 2.7 - 2010/07/03
- Python 3.0 - 2008/12/03
- Python 3.1 - 2009/06/27
- Python 3.2 - 2011/02/20
- Python 3.3 - 2012/09/29
- Python 3.4 - 2014/03/16
- Python 3.5 - 2015/09/13
2014年11月,Python2.7將在2020年中止支持的消息被髮布,而且不會在發佈2.8版本,建議用戶儘量的遷移到3.4+ Python最初發布時,在設計上有一些缺陷,好比Unicode標準晚於Python出現,因此一直以來對Unicode的支持並不徹底,而ASCII編碼支持的字符有限。例: 對中文支持很差Python3相對Python早期的版本是一個較大的升級,Py3在設計的時候沒有考慮向下兼容,因此不少早期版本的Python的程序沒法再Py3上運行。爲了照顧早期的版本,推出過渡版本2.6——基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,容許使用部分Python 3.0的語法與函數。2010年繼續推出了兼容版本2.7,大量Python3的特性被反向遷移到了Python2.7,2.7比2.6進步很是多,同時擁有大量3中的特性和庫,而且照顧了原有的Python開發人羣。數組
6、Python2仍是Python3?
py2.7是2.x系列的最後一個版本,已經中止開發,再也不增長新功能。2020年終止支持。全部的最新的標準庫的更新改進,只會在3.x的版本里出現。Guido決定清理Python2.x ,而且再也不兼容舊版本。網絡
最大的一個改變就是使用Unicode做爲默認編碼。Pyhton2.x中直接寫中文會報錯,Python3中能夠直接寫中文了。從開源項目看,支持py3的比例已經大大提升,知名的項目通常都支持py2.7和py3+。
2.x默認ASSIC。
3.x默認UNICODE,默認支持中文。
py3比py2更規範統1、去掉了不必的關鍵字Python3.x還在持續改進,因此咱們仍是推薦你們使用Python3.x。