小猿圈python學習-Python介紹、發展趨勢

Python介紹

Python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。html

最新的TIOBE排行榜,Python趕超C++佔據第3, 與Java、C一塊兒成爲全球最流行的3大編程語言。python

Python崇尚優美、清晰、簡單,上手簡單,很是適合作爲第一門編程語言來學習。web

Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。算法

目前Python主要應用領域:

  1. WEB開發——最火的Python web框架Django, 支持異步高併發的Tornado框架,短小精悍的flask,bottle, Django官方的標語把Django定義爲the framework for perfectionist with deadlines(大意是一個爲徹底主義者開發的高效率web框架)shell

  2. 網絡編程——支持高併發的Twisted網絡框架, py3引入的asyncio使異步編程變的很是簡單編程

  3. 爬蟲——爬蟲領域,Python幾乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥flask

  4. 雲計算——目前最火最知名的雲計算框架就是OpenStack,Python如今的火,很大一部分就是由於雲計算markdown

  5. 人工智能、數據分析—— Python 是目前公認的人工智能和數據分析領域的必備語言網絡

  6. 自動化運維——問問中國的每一個運維人員,運維人員必須會的語言是什麼?10我的相信會給你一個相同的答案,它的名字叫Python多線程

  7. 金融分析——我我的以前在金融行業,10年的時候,咱們公司寫的好多分析程序、高頻交易軟件就是用的Python,到目前,Python是金融分析、量化交易領域裏用的最多的語言
  8. 科學運算—— 97年開始,NASA就在大量使用Python在進行各類複雜的科學運算,隨着NumPy, SciPy, Matplotlib, Enthought librarys等衆多程序庫的開發,使的Python愈來愈適合於作科學計算、繪製高質量的2D和3D圖像。和科學計算領域最流行的商業軟件Matlab相比,Python是一門通用的程序設計語言,比Matlab所採用的腳本語言的應用範圍更普遍
  9. 遊戲開發——在網絡遊戲開發中Python也有不少應用。相比Lua or C++,Python 比 Lua 有更高階的抽象能力,能夠用更少的代碼描述遊戲業務邏輯,與 Lua 相比,Python 更適合做爲一種 Host 語言,即程序的入口點是在 Python 那一端會比較好,而後用 C/C++ 在很是必要的時候寫一些擴展。Python 很是適合編寫 1 萬行以上的項目,並且可以很好地把網遊項目的規模控制在 10 萬行代碼之內。另外據我所知,知名的遊戲<文明> 就是用Python寫的

Python在一些公司的應用:

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發
  • CIA: 美國中情局網站就是用Python開發的
  • NASA: 美國航天局(NASA)大量使用Python進行數據分析和運算
  • YouTube:世界上最大的視頻網站YouTube就是用Python開發的
  • Dropbox:美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
  • Instagram:美國最大的圖片分享社交網站,天天超過3千萬張照片被分享,所有用python開發
  • Facebook:大量的基礎庫均經過Python實現的
  • Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
  • 豆瓣: 公司幾乎全部的業務均是經過Python開發的
  • 知乎: 國內最大的問答社區,經過Python開發(國外Quora)
  • 春雨醫生:國內知名的在線醫療網站是用Python開發的
  • 除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。

Python的發展史

1989年,Guido開始寫Python語言的編譯器。

1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。

Granddaddy of Python web frameworks, Zope 1 was released in 1999

Python 1.0 - January 1994 增長了 lambda, map, filter and reduce.

Python 2.0 - October 16, 2000,加入了內存回收機制,構成了如今Python語言框架的基礎

Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生

Python 2.5 - September 19, 2006

Python 2.6 - October 1, 2008

Python 2.7 - July 3, 2010

In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible

Python 3.0 - December 3, 2008 (這裏要解釋清楚 爲何08年就出3.0,2010年反而又推出了2.7?是由於3.0不向下兼容2.0,致使你們都拒絕升級3.0,無奈官方只能推出2.7過渡版本)

Python 3.1 - June 27, 2009

Python 3.2 - February 20, 2011

Python 3.3 - September 29, 2012

Python 3.4 - March 16, 2014

Python 3.5 - September 13, 2015

Python 3.6 - 2016-12-23 發佈python3.6.0版

Python的發展前景怎麼樣?

知乎上有一篇文章,問Python將來10年的發展前景,請去看一下Alex的回答

將來十年Python的前景會怎樣? https://www.zhihu.com/question/22112542/answer/166053516

 

Python 2 or Python 3 ?

In summary : Python 2.x is legacy, Python 3.x is the present and future of the language

Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement of

extended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x is

under active development and has already seen over five years of stable releases, including version 3.3 in 2012,

3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are only

available by default in Python 3.x.

Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than is the case for new releases in the 2.x range. The most drastic improvement is the better Unicode support (with all text strings being Unicode by default) as well as saner bytes/Unicode separation.

Besides, several aspects of the core language (such as print and exec being statements, integers using floor division) have been adjusted to be easier for newcomers to learn and to be more consistent with the rest of the language, and old cruft has been removed (for example, all classes are now new-style, 「range()」 returns a memory efficient iterable, not a list as in 2.x).

目前雖然業內很多企業還在大量使用 2.7,由於舊項目幾十萬甚至上百萬行的代碼想快速升級到3.0不是件容易的事,可是你們在開發新項目時幾乎都會使用3.x。

另外Python3 確實想比2.x作了不少的改進,直觀點來說,就像從XP升級到Win7的感受同樣,棒棒的。

Py2 和Py3的具體細節區別咱們在之後課程中會慢慢深刻。

Python的優缺點

先看優勢

  1. Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
  2. 開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
  3. 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
  4. 可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工 做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
  5. 可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
  6. 可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。

再看缺點:

  1. 速度慢,Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些,所以這也是不少所謂的大牛不屑於使用Python的主要緣由,但其實這裏所指的運行速度慢在大多數狀況下用戶是沒法直接感知到的,必須藉助測試工具才能體現出來,好比你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是很是誇張了,可是你是沒法直接經過肉眼感知的,由於一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數狀況下Python已經徹底能夠知足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種狀況下,固然仍是建議你用C去實現的。
  2. 代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
  3. 線程不能利用多核問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。關於這個問題的折衷解決方法,咱們在之後線程和進程章節裏再進行詳細探討。

固然,Python還有一些其它的小缺點,在這就不一一列舉了,我想說的是,任何一門語言都不是完美的,都有擅長和不擅長作的事情,建議各位不要拿一個語言的劣勢去跟另外一個語言的優點來去比較,語言只是一個工具,是實現程序設計師思想的工具,就像咱們以前中學學幾什麼時候,有的時候須要要圓規,有的時候須要用三角尺同樣,拿相應的工具去作它最擅長的事纔是正確的選擇。以前不少人問我Shell和Python到底哪一個好?我回答說Shell是個腳本語言,但Python不僅是個腳本語言,能作的事情更多,而後又有鑽牛角尖的人說徹底不必學Python, Python能作的事情Shell均可以作,只要你足夠牛B,而後又舉了用Shell能夠寫俄羅斯方塊這樣的遊戲,對此我能說表達只能是,不要跟SB理論,SB會把你拉到跟他同樣的高度,而後用充分的經驗把你打倒。

  
相關文章
相關標籤/搜索