2020年5月21日 星期四

還不知道Python是什麼?快跟上世界的腳步吧!

 什麼是Python?看過來,讓你看了就懂!
什麼是Python?看過來,讓你看了就懂!

一、Python 是什麼語言,python是什麼類型的語言?
 
二、Python 是什麼意思,python怎麼讀?
 
三、Python的發展歷程
 
四、Python未來十年的發展預測
 
五、Python可以用來幹什麼?
 
六、Python為什麼這麼火?
 
七、Python和人工智慧 的關係?
 
八、Python的優勢和劣勢
 
九、誰適合學Python?
 
十、學習Python的可以從事的工作?
 
十一、如何入門學習python?
 
十二、Python入門書籍推薦
 
十三、Python各版本下載:
 
十四、結語
 
一、Python是什麼語言,python是什麼類型的語言?
  Python 語言是一種解釋型、面向對象、動態數據類型的高級程序設計語言。  
Python 程式語言是由Guido van Rossum在1989年底發明,第一個公開發行版是在1991年。
 
和Perl語言一樣, Python 源代碼一樣遵循 GPL(GNU General Public License)協議。
 
二、Python是什麼意思,python怎麼讀?
  Python (英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/,漢語翻譯為巨蟒、巨蛇的意思  
三、Python的發展歷程
 
1989年的聖誕節,Guido開始編寫Python語言的編譯器。 Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一
 
種C和shell之間,功能全面,易學易用,可拓展的語言。
 
1991年,第一個Python編譯器誕生。它是用C語言實現的,並能夠調用C語言的庫文件。從一出生,Python已經具有了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊為基礎的拓
 
展系統。
 
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開發人群。
 
四、python十年後發展預測
 
至2027年,Python 已經推出了5.0版本,開發效率極高、運行速度飛快,成為全球最受程式設計師歡迎的開發語言!全球超過50%的 IT 系統是基於 Python 開發的!
 
這不是危言聳聽或誇大其詞, Python 是目前我了解的所有語言裡,最有可能成為最符合人類對程式期待的語言。
 
人類對程式語言的期待是什麼?就是“更高更快更強”呀!
 
就是這樣的,分別解釋下:
 
更高——開發效率更高
 
這一兩年Python 在業內大火, 我一直思考原因是為什麼,除了雲計算幫Python 帶了一波節奏外,還有沒有其它原因呢?必然有,我認為還有一個主要原因就是近幾點互聯網創業熱情高漲,千千萬萬程式設計師聽了各種創業雞湯,辭掉了大公司安穩工作玩創業,14,15年的中關村創業大街那叫一個熱鬧,總理都去過好幾次,當時大家都急著要把東西快速開發出來去拿融資,那時的投資人腦子也是熱呀,大批大批的錢投給各創業公司,供他們各種現金補貼搶用戶。時間就是金錢,大家恨不得今天剛有了 idea,明天產品就能上線,產品晚上線一個月,可能戰爭就跟你沒關係了。因此,一門開發效率極高的語言就此進入開發者眼簾,開發者們因為猶如神助,開發效率不知道比C, Java 高到哪裡去了,眾多創業公司首選Python 做為開發語言,雖然那些創業公司大多都失敗了,但是催生起了Python 在全球大熱的前戲。
 
更快——運行速度更快
 
顯然Python 並不是一門快語言,慢也是被很多程式設計師詬病Python 的主要原因,但最近幾年PyPy 解釋器在不斷的提高著Python 的運行速度,通過PyPy 運行的程序,在某些場景下速度直接逼近C 語言,相信再過幾年,Python 的運行速度將不再是問題。另外,由於近些 CPU 處理速度的快速發展,程式語言本身的快慢在大多數業務場景下已不再被做為主要考量(除了對響應速度極為敏感的業務,如搜素)。
 
更強——功能更強
 
這是導致 Python 大火的另一個主要原因之一,Python 的標準庫和第三方庫強大到你無法想像,無論你想從事任何方向的技術程式語言,你幾乎都能找到相應的庫支持。
 
以下僅舉幾個栗子:
 
WEB開發——最火的 Python web 框架 Django, 支持異步高並發的 Tornado 框架,短小精悍的 flask,bottle, Django 官方的標語把 Django 定義為 the framework for perfectionist with deadlines
 
網絡程式語言——支持高並發的 Twisted 網絡框架, py3 引入的 asyncio 使異步程式語言變的非常簡單
 
爬蟲——爬蟲領域,Python 幾乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib 等,想爬啥就爬啥
 
雲計算——目前最火最知名的雲計算框架就是 OpenStack, Python 現在的火,很大一部分就是因為雲計算
  人工智慧 ——誰會成為 AI 和大數據時代的第一開發語言?這本已是一個不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和Python 還各有機會,局面尚且不清楚,那麼三年之後,趨勢已經非常明確了,特別是前兩天Facebook 開源了PyTorch 之後,Python 作為AI時代頭牌語言的位置基本確立,未來的懸念僅僅是誰能坐穩第二把交椅。  
自動化運維——問問中國的每個運維人員,運維人員必須會的語言是什麼?10個人相信會給你一個相同的答案,它的名字叫Python
 
金融分析——我個人之前在金融行業,10年的時候,我們公司寫的好多分析程序、高頻交易軟件就是用的 Python,到目前, Python 是金融分析、量化交易領域裡用的最多的語言
 
科學運算—— 你知道麼,97年開始,NASA 就在大量使用Python 在進行各種複雜的科學運算,隨著NumPy, SciPy, Matplotlib, Enthought librarys 等眾多程序庫的開發,使的Python 越來越適合於做科學計算、繪製高質量的2D 和3D 圖像。和科學計算領域最流行的商業軟件 Matlab 相比,Python 是一門通用的程序設計語言,比 Matlab 所採用的腳本語言的應用範圍更廣泛
 
遊戲開發——在網絡遊戲開發中 Python 也有很多應用。相比Lua or C++,Python 比Lua 有更高階的抽象能力,可以用更少的代碼描述遊戲業務邏輯,與Lua 相比,Python 更適合作為一種Host 語言,即程序的入口點是在Python那一端會比較好,然後用C/C++ 在非常必要的時候寫一些擴展。 Python 非常適合編寫 1 萬行以上的項目,而且能夠很好地把網游項目的規模控制在 10 萬行代碼以內。另外據我所知,知名的遊戲<文明>就是用Python寫的
 
列舉這麼多之後,你會發現,Python 幾乎在上述每個領域都做的非常優秀,這是一門真正意義上的全棧語言,即使目前世界上使用最廣泛的Ja​​va 語言,在很多方面與Python相比也遜色很多!我目前還看不到有哪門語言,能同時在在如此多的領域能做出這些成績。
 
最後我在做幾點與Python相關的預測:
 
5年之內,Python 會取代 PHP,成為最受歡迎的 WEB 開發語言
 
10年內,Python 的使用量將趨近甚至超過Java
 
10年內,主流的人工智慧技術都是基於 Python 開發
 
Python 應用率已經取得第一的領域有:雲計算、爬蟲、自動化運維、金融分析
 
五、Python可以用來幹什麼?
 
在我看來,基本上可以不負責任地認為,Python 可以做任何事情。無論是從入門級選手到專業級選手都在做的爬蟲,還是Web 程序開發、桌面程序開發還是科學計算、圖像處理,Python都可以勝任。
 
Python為我們提供了非常完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形像地稱作“內置電池(Batteries included)”。用Python開發,許多功能不必從零編寫,直接使用現成的即可。
 
除了內置的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。當然,如果你開發的代碼通過很好的封裝,也可以作為第三方庫給別人使用。
 
許多大型網站就是用Python開發的,例如YouTube、Instagram,還有全球的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美國航空航天局)都大量地使用Python。
 
龜叔給Python的定位是“優雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程序。
 
總的來說,Python的哲學就是簡單優雅,盡量寫容易看明白的代碼,盡量寫少的代碼。如果一個資深程式設計師向你炫耀他寫的晦澀難懂、動不動就幾萬行的代碼,你可以盡情地嘲笑他。
 
六、Python為什麼這麼火?
 
Python 是一門更注重可讀性和效率的語言,尤其是相較於Java,PHP 以及C++ 這樣的語言,它的這兩個優勢讓其在開發者中大受歡迎,同時在運維領域也被大量運用到自動化運維場景中。以下是Python的五大優勢:
 
1、Python 易於學習;
 
2、用少量的代碼構建出很多功能;
 
3、Python 擁有最成熟的程序包資源庫之一;
 
4、Python 緊挨著 R 語言,都是現代數據科學中最常被使用的語言;
 
5、Python 是跨平台且開源的。
 
七、Python和人工智慧的關係?
 
我們經常聽到“Python”與“人工智慧”這兩個詞,也很容易混淆這兩個詞,那麼Python和人工智慧有什麼關係呢?
 
首先我們先來說說人工智慧
 
人工智慧是計算機科學的一個分支,它企圖了解智慧的實質,並生產出一種新的能以人類智慧相似的方式做出反應的智慧機器,該領域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。
 
簡單來說,人工智慧是一種未來性的技術。
 
再來說說Python
 
Python是一門計算機程序語言,目前人工智慧科學領域應用廣泛,應用廣泛就表明各種庫,各種相關聯的框架都是以Python作為主要語言開發出來的。
 
谷歌的TensorFlow大部分代碼都是Python,其他語言一般只有幾千行 。如果講開發效率,用Python,誰會用Java這種高不成低不就的語言搞人工智慧呢?
 
Python雖然是腳本語言,但是因為容易學,迅速成為科學家的工具,從而積累了大量的工具庫、架構,人工智慧涉及大量的數據計算,用Python是很自然的,簡單高效。
 
Python有非常多優秀的深度學習庫可用,現在大部分深度學習框架都支持Python,不用Python用誰?
 
八、Python的優勢和劣勢
 
Python的定位是“優雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程序。
 
python語言的優點
 
⑴作為初學python的科班出身的小白,python非常簡單,非常適合人類閱讀。閱讀一個良好的Python程序就感覺像是在讀英語一樣,儘管這個英語的要求非常嚴格!Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注於解決問題而不是去搞明白語言本身。
 
⑵易學。 python雖然是用c語言寫的,但是它擯棄了c中非常複雜的指針,簡化了python的語法。
 
⑶Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,你可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟件中。 Python希望看到一個更加優秀的人創造並經常改進。
 
⑷可移植性————由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。如果你小心地避免使用依賴於系統的特性,那麼你的所有Python程序無需修改就可以在下述任何平台上面運行。這些平台包括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開發的Android平台!
 
⑸在計算機內部,Python解釋器把源代碼轉換成稱為字節碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。事實上,由於你不再需要擔心如何編譯程序,如何確保連接轉載正確的庫等等,所有這一切使得使用Python更加簡單。由於你只需要把你的Python程序拷貝到另外一台計算機上,它就可以工作了,這也使得你的Python程序更加易於移植。
 
⑹Python既支持面向過程的函數程式語言也支持面向對象的抽象程式語言。在面向過程的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在面向對象的語言中,程序是由數據和功能組合而成的對象構建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強大又簡單的方式實現面向對象程式語言。
 
⑺ 可擴展性和可嵌入性。如果你需要你的一段關鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然後在你的Python程序中使用它們。你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
 
⑻豐富的庫。 Python標準庫確實很龐大。 python有可定義的第三方庫可以使用。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI (圖形用戶界面)、Tk和其他與系統有關的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python的“功能齊全”理念。除了標準庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。
 
⑼ Python確實是一種十分精彩又強大的語言。它合理地結合了高性能與使得編寫程序簡單有趣的特色。
 
⑽規範的代碼。 Python採用強制縮進的方式使得代碼具有極佳的可讀性。
 
python語言的缺點
 
很多時候不能將程序連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,可以較為方便的在shell下完成簡單程序,不需要如Python一樣,必須將程序寫入一個.py文件。 (對很多用戶而言這也不算是限制)
 
⑴運行速度,有速度要求的話,用C++改寫關鍵部分吧。不過對於用戶而言,機器上運行速度是可以忽略的。因為用戶根本感覺不出來這種速度的差異。
 
⑵既是優點也是缺點,python的開源性使得Python語言不能加密,但是目前全球市場純粹靠編寫軟件賣給客戶的越來越少,網站和移動應用不需要給客戶源代碼,所以這個問題就是問題。不過隨著時間的推移,很多全球軟件公司,尤其是遊戲公司,也開始規模使用他。
 
⑶ 構架選擇太多(沒有像C#這樣的官方.net構架,也沒有像ruby由於歷史較短,構架開發的相對集中。Ruby on Rails 構架開發中小型web程序天下無敵)。不過這也從另一個側面說明,python比較優秀,吸引的人才多,項目也多。
 
九、誰適合學Python?
 
我們首先來看一看誰在學Python:
 
第一類:入行程式語言新手:大學剛畢業或者其他行業轉崗,想從事程式語言開發的工作,目前認為Python比較火,想入行;
 
第二類:Linux系統運維人員:Linux運維以繁雜著稱,對人員系統掌握知識的能力要求非常高,那麼也就需要一個程式語言能解決自動化的問題,Python開發運維工作是首選,Python運維工資的薪資普遍比Linux運維人員的工資高。
 
第三類:做數據分析或者人工智慧:不管是常見的大數據分析或者一般的金融分析、科學分析都比較大程度的應用了數據分析,人工智慧的一些常見應用也使用了Python的一些技術。
 
第四類:在職程式設計師轉Python開發:平常只關注div+css這些頁面技術,很多時候其實需要與後端開發人員進行交互的,現在有很多Java程序在轉到Python語言,他們都被Python代碼的優美和開發效率所折服
 
第五類:其他:一些工程師以前在做很多SEO優化的時候,苦於不會程式語言,一些程序上面的問題,得不到解決,只能做做簡單的頁面優化。現在學會Python之後,可以編寫一些查詢收錄,排名,自動生成網絡地圖的程序,解決棘手的SEO問題。
 
從入門級選手到專業級選手都在做的——爬蟲
 
用 Python 寫爬蟲的教程網上一抓一大把,據我所知很多初學 Python 的人都是使用它編寫爬蟲程序。小到抓取一個小黃圖網站,大到一個互聯網公司的商業應用。通過Python 入門爬蟲比較簡單易學,不需要在一開始掌握太多太基礎太底層的知識就可以很快上手,而且很快可以做出成果,非常適合小白一開始想做出點看得見的東西的成就感。
 
除了入門,爬蟲也被廣泛應用到一些需要數據的公司、平台和組織,通過抓取互聯網上的公開數據,來實現一些商業價值是非常常見的做法。當然這些選手的爬蟲就要厲害的多了,需要處理包括路由、存儲、分佈式計算等很多問題,與小白的抓黃圖小程序,複雜度差了很多倍。
 
Web 程序
 
除了爬蟲,Python 也廣泛應用到了 Web 端程序,比如你現在正在使用的知乎,主站後台就是基於 Python 的 tornado 框架,豆瓣的後台也是基於 Python。除了 tornado (Tornado Web Server),Python 常用的 Web 框架還有 Flask(Welcome | Flask (A Python Microframework)),Django (The Web framework for perfectionists with deadlines) 等等。通過上述框架,你可以很方便實現一個Web 程序,比如我認識的一些朋友,就通過Python 自己編寫了自己的博客程序,包括之前的zhihu.photo,我就是通過Flask 實現的後台(出於版權等原因,我已經停掉了這個網站)。除了上述框架,你也可以嘗試自己實現一個 Web 框架。
 
桌面程序
 
Python 也有很多UI 庫,你可以很方便地完成一個GUI 程序(話說我最開始接觸程式語言的時候,就覺得寫GUI 好炫酷,不過搞了好久才在VC6 搞出一個小程序,後來又輾轉Delphi 、Java等,最後接觸到Python 的時候,我對GUI 已經不感興趣了)。 Python 實現 GUI 的實例也不少,包括大名鼎鼎的 Dropbox,就是 Python 實現的服務器端和客戶端程序。
 
人工智慧(AI)與機器學習
 
人工智慧是現在非常火的一個方向,AI熱潮讓Python語言的未來充滿了無限的潛力。現在釋放出來的幾個非常有影響力的AI框架,大多是Python的實現,為什麼呢?因為Python足夠動態、具有足夠性能,這是AI技術所需要的技術特點。比如基於Python的深度學習庫、深度學習方向、機器學習方向、自然語言處理方向的一些網站基本都是通過Python來實現的。
 
機器學習,尤其是現在火爆的深度學習,其工具框架大都提供了Python接口。 Python在科學計算領域一直有著較好的聲譽,其簡潔清晰的語法以及豐富的計算工具,深受此領域開發者喜愛。
 
早在深度學習以及Tensorflow等框架流行之前,Python中即有scikit-learn,能夠很方便地完成幾乎所有機器學習模型,從經典數據集下載到構建模型只需要簡單的幾行代碼。配合Pandas、matplotlib等工具,能很簡單地進行調整。
 
而Tensorflow、PyTorch、MXNet、Keras等深度學習框架更是極大地拓展了機器學習的可能。使用Keras編寫一個手寫數字識別的深度學習網絡僅僅需要寥寥數十行代碼,即可藉助底層實現,方便地調用包括GPU在內的大量資源完成工作。
 
值得一提的是,無論什麼框架,Python只是作為前端描述用的語言,實際計算則是通過底層的C/C++實現。由於Python能很方便地引入和使用C/C++項目和庫,從而實現功能和性能上的擴展,這樣的大規模計算中,讓開發者更關注邏輯於數據本身,而從內存分配等繁雜工作中解放出來,是Python被廣泛應用到機器學習領域的重要原因。
 
科學計算
 
Python 的開發效率很高,性能要求較高的模塊可以用 C 改寫,Python 調用。同時,Python 可以更高層次的抽象問題,所以在科學計算領域也非常熱門。包括 scipy、numpy 等用於科學計算的第三方庫的出現,更是方便了又一定數學基礎,但是計算機基礎一般的朋友。

相關文章:

從哆啦A夢到 iPhone...為何 UI 設計用「圓角」就是比較討喜?

APCS 程式檢定,該從 C、Java 還是 Python 下手?

前端工程師CSS教學】定位元素Positioning Elements

狗狗是人工智慧的最佳教練!Google AI機器人學狗左轉右彎還能小跑

人工智慧讓視障朋友看見世界(上)

人工智慧學校執行長陳昇瑋驟世!

人工智慧用Python輕鬆寫出專屬自己的番茄鐘(下)

沒有留言: