我是老李,我來回答你的問題
Python現在幾乎是全民學習的狀態了,小到小學教材,大到高中大學,都用對應的教材和考試。
為什么學Python?因為Python簡單、入門快。
首先說你問的,Python有什么用途?
我發現有Python主要有以下五大主要用途:
一、Web開發
Python的誕生歷史比Web還要早,由于Python是一種解釋型的腳本語言,開發效率高,所以非常適合用來做Web開發。
Python有上百種Web開發框架,有很多成熟的模板技術,選擇Python開發Web應用,不但開發效率高,而且運行速度快。
常用的web開發框架有:Django、Flask、Tornado等。
許多知名的互聯網企業將python作為主要開發語言:豆瓣、知乎、果殼網、Google、NASA、YouTube、Facebook……
由于后臺服務器的通用性,除了狹義的網站之外,很多App和游戲的服務器端也同樣用Python實現。
二、網絡爬蟲
許多人對編程的熱情始于好奇,終于停滯。
距離真槍實干做開發有技術差距,也無人指點提帶,也不知當下水平能干嘛?就在這樣的疑惑循環中,編程技能止步不前,而爬蟲是最好的進階方向之一。
網絡爬蟲是Python比較常用的一個場景,國際上,google在早期大量地使用Python語言作為網絡爬蟲的基礎,帶動了整個Python語言的應用發展。以前國內很多人用采集器搜刮網上的內容,現在用Python收集網上的信息比以前容易很多了,如:
從各大網站爬取商品折扣信息,比較獲取最優選擇;
對社交網絡上發言進行收集分類,生成情緒地圖,分析語言習慣;
爬取網易云音樂某一類歌曲的所有評論,生成詞云;
按條件篩選獲得豆瓣的電影書籍信息并生成表格……
應用實在太多,幾乎每個人學習爬蟲之后都能夠通過爬蟲去做一些好玩有趣有用的事。
三、人工智能
人工智能是現在非常火的一個方向,AI熱潮讓Python語言的未來充滿了無限的潛力。現在釋放出來的幾個非常有影響力的AI框架,大多是Python的實現,為什么呢?
因為Python有很多庫很方便做人工智能,比如numpy,scipy做數值計算的,sklearn做機器學習的,pybrain做神經網絡的,matplotlib將數據可視化的。在人工智能大范疇領域內的數據挖掘、機器學習、神經網絡、深度學習等方面都是主流的編程語言,得到廣泛的支持和應用。
人工智能的核心算法大部分還是依賴于C/C++的,因為是計算密集型,需要非常精細的優化,還需要GPU、專用硬件之類的接口,這些都只有C/C++能做到。
而Python是這些庫的APIbinding,使用Python是因為CPython的膠水語言特性,要開發一個其他語言到C/C++的跨語言接口,Python是最容易的,比其他語言的門檻要低不少,尤其是使用Cython的時候。
四、數據分析
數據分析處理方面,Python有很完備的生態環境?!按髷祿狈治鲋猩婕暗降姆植际接嬎?、數據可視化、數據庫操作等,Python中都有成熟的模塊可以選擇完成其功能。對于Hadoop-MapReduce和Spark,都可以直接使用Python完成計算邏輯,這無論對于數據科學家還是對于數據工程師而言都是十分便利的。
五、自動化運維
Python對于服務器運維而言也有十分重要的用途。由于目前幾乎所有Linux發行版中都自帶了Python解釋器,使用Python腳本進行批量化的文件部署和運行調整都成了Linux服務器上很不錯的選擇。Python中也包含許多方便的工具,從調控ssh/sftp用的paramiko,到監控服務用的supervisor,再到bazel等構建工具,甚至conan等用于C++的包管理工具,Python提供了全方位的工具集合,而在這基礎上,結合Web,開發方便運維的工具會變得十分簡單。
更多學習干貨,我哦!
從入門級選手到專業級選手都在做的——爬蟲
用Python寫爬蟲的教程網上一抓一大把,據我所知很多初學Python的人都是使用它編寫爬蟲程序。小到抓取一個小黃圖網站,大到一個互聯網公司的商業應用。通過Python入門爬蟲比較簡單易學,不需要在一開始掌握太多太基礎太底層的知識就可以很快上手,而且很快可以做出成果,非常適合小白一開始想做出點看得見的東西的成就感。
除了入門,爬蟲也被廣泛應用到一些需要數據的公司、平臺和組織,通過抓取互聯網上的公開數據,來實現一些商業價值是非常常見的做法。當然這些選手的爬蟲就要厲害的多了,需要處理包括路由、存儲、分布式計算等很多問題,與小白的抓黃圖小程序,復雜度差了很多倍。
Web程序
除了爬蟲,Python也廣泛應用到了Web端程序,比如你現在正在使用的知乎,主站后臺就是基于Python的tornado框架,豆瓣的后臺也是基于Python。除了tornado(TornadoWebServer),Python常用的Web框架還有Flask(Welcome|Flask(APythonMicroframework)),Django(TheWebframeworkforperfectionistswithdeadlines)等等。通過上述框架,你可以很方便實現一個Web程序,比如我認識的一些朋友,就通過Python自己編寫了自己的博客程序,包括之前的zhihu.photo,我就是通過Flask實現的后臺(出于版權等原因,我已經停掉了這個網站)。除了上述框架,你也可以嘗試自己實現一個Web框架。
桌面程序
Python也有很多UI庫,你可以很方便地完成一個GUI程序(話說我最開始接觸編程的時候,就覺得寫GUI好炫酷,不過搞了好久才在VC6搞出一個小程序,后來又輾轉Delphi、Java等,最后接觸到Python的時候,我對GUI已經不感興趣了)。Python實現GUI的實例也不少,包括大名鼎鼎的Dropbox,就是Python實現的服務器端和客戶端程序。
人工智能(AI)與機器學習
人工智能是現在非?;鸬囊粋€方向,AI熱潮讓Python語言的未來充滿了無限的潛力?,F在釋放出來的幾個非常有影響力的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等用于科學計算的第三方庫的出現,更是方便了又一定數學基礎,但是計算機基礎一般的朋友。