尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
Python是一門腳本語言,因為能將其他各種編程語言寫的模塊黏接在一起,也被稱作膠水語言。強大的包容性、強悍的功能和應用的廣泛性使其受到越來越多的關注,想起一句老話:你若盛開,蝴蝶自來。
對於沒有馬子打電話噓寒問暖的工程師同志來說,研究Python大概是填補內心空虛的一個好選擇,最近就有很多朋友來找小編咨詢Python的用途和未來發展方向……
那乾脆今天就和大家一起梳理一下Python語言到底能做哪些事~
一
WEB開發
在國內,豆瓣一開始就使用Python作為web開發基礎語言,知乎的整個架構也是基於Python語言,這使得web開發這塊在國內發展的很不錯。
盡管目前Python並不是做Web開發的首選,但一直都占有不可忽視的一席。Python中有各類Web框架,無論是簡單而可以自由搭配的微框架還是全功能的大型MVC框架都一應俱全,這在需要敏捷開發的Web項目中也是十分具有優勢的。
廣泛使用(或曾經廣泛使用)Python提供的大型Web服務包括知乎、豆瓣、Dropbox等網站。加之Python本身的「膠水」特性,很容易做到在需要大規模性能級計算時整合其它語言,同時保留Web開發時的輕便快捷。
使用Python中的Flask搭建一個Web版的Hello world,也只需要幾行而已:
from flask import Flask
app = Flask(__name__)
@app.route(“/”)
def hello():
return “Hello World!”
if __name__ == ‘__main__’:
app.run()
除此之外,Python中還有大量「開箱即用」的模塊,用於與各種其它網站的對接等相關功能。如果希望開發個微信公眾號相關功能,wechat-sdk/weixin-python等包,能夠使你幾乎完全不用管文檔中提及的各種服務器交互細節,專注於功能做到即能完成開發。
目前,國內的Python web開發主要有兩個技術棧:
a、Django
Django是一個高級的敏捷web開發框架,如果學會了,擼一個網站很快。當然如果純粹比擼網站的速度,基於ruby的Ruby on rails顯然更快,但是Django有一個優勢就是性能優秀,更適合國內網站的應用場景。
國外的著名圖片社區Pinterest早期也是基於Django開發的,承受了用戶快速增長的衝擊。所以說如果你想快速開發一個網站,還能兼顧APP客戶端的API調用需求,Django是可以信賴的。
b、 Flask
相對於Django,Flask則是一個輕量級的web框架,Flask的最大的優勢是性能優越,適合配合手機客戶端開發後台API服務。國內基於Flask的Restful API服務這快很火,也是需求最大的。
知名的比如百度、網易、小米、陌陌等等很多公司都有基於Flask的應用部署。當然,如果你想做一個傳統的web網站,還是建議使用Django,Flask的優勢是後端、API,不適合構建全功能網站。
二
網路爬蟲
網路爬蟲是Python比較常用的一個場景,國際上,google在早期大量地使用Python語言作為網路爬蟲的基礎,帶動了整個Python語言的應用發展。以前國內很多人用采集器搜刮網上的內容,現在用Python收集網上的信息比以前容易很多了。
Python在這個方面有許多工具上的積累,無論是用於模擬HTTP請求的Requests、用於HTML DOM解析的PyQuery/BeautifulSoup、用於自動化分布式爬取任務的Scrapy,還是用於最簡化數據庫訪問的各種ORM,都使得Python成為數據爬取的首選語言之一。特別是,爬取後的數據分析與計算是Python最為擅長的領域,非常容易整合。目前Python比較流行的網路爬蟲框架是功能非常強大的scrapy。
三
人工智能(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有很完備的生態環境。「大數據」分析中涉及到的分布式計算、數據可視化、數據庫操作等,Python中都有成熟的模塊可以選擇完成其功能。對於Hadoop-MapReduce和Spark,都可以直接使用Python完成計算邏輯。這無論對於數據科學家還是對於數據工程師而言都是十分便利的。
其中諸如Seaborn這樣的可視化庫,能夠僅僅使用一兩行就對數據進行繪圖,而利用Pandas和numpy、scipy則可以簡單地對大量數據進行篩選、回歸等計算。而後續複雜計算中,對接機器學習相關算法,或者提供Web訪問接口,或是做到遠程調用接口,都非常簡單。
import seaborn as sns
sns.set()
# Load the example tips dataset
iris = sns.load_dataset(“iris”)
# Plot tip as a function of toal bill across days g = sns.lmplot(x=”sepal_length”, y=”sepal_width”, hue=”species”,
truncate=True, size=5, data=iris)
# Use more informative axis labels than are provided by default
g.set_axis_labels(“Sepal length (mm)”, “Sepal width (mm)”)
Python在數據分析處理中典型的應用量化交易,簡單來說就是說借助於強悍的數學模型數據分析來做到利益最大化損失最小化,目前已經有許多很好的框架可以使用。
五
服務器運維及其它小工具
Python對於服務器運維而言也有十分重要的用途。由於目前幾乎所有Linux發行版中都自帶了Python解釋器,使用Python腳本進行批量化的文件部署和運行調整都成了Linux服務器上很不錯的選擇。
Python中也包含許多方便的工具,從調控ssh/sftp用的paramiko,到監控服務用的supervisor,再到bazel等構建工具,甚至conan等用於C++的包管理工具,Python提供了全方位的工具集合,而在這基礎上,結合Web,開發方便運維的工具會變得十分簡單。
更有意思的是,Python社區的開發者們還製作了諸如itchat這樣的開發工具包,你大可以用微信來管理服務器或是各種服務的運行。想想看,一個微信機器人,能夠在出現異常時,又或者每天固定時刻匯報服務器或是程序運行情況,甚至包含用matplotlib/seaborn繪制的圖表,一目了然,而你對它發上簡簡單單一句話,即可完成對服務器的調整。
六
桌面程序
除此之外,Python也可以用於桌面軟件開發(如sublime text等),甚至移動端開發(參看kivy)。Python簡潔方便,各種工具包齊全的環境,能大幅度減少開發者的負擔。
著名的UI框架QT有Python語言的做到版本PyQT。Python簡單易用的特性加上QT的優雅,可以很輕鬆的開發界面複雜的桌面程序,並且能輕鬆做到跨平台特性。
七
多媒體應用
可以用Python里面的PIL、Piddle、ReportLab 等模塊對圖象、聲音、視頻、動畫等進行處理,還可以用Python生成動態圖表和統計分析圖表。另外,還可以利用PyOpenGl模塊非常快速有效的編寫出三維場景。
曾經為「阿貝斯(Abyss)」、「星際迷航(Star Trek)」、「Indiana Jones」等超級大片製作過特技和動畫的工業光魔公司(Industrial Light)就採用Python進行商業動畫製作。然而在很早以前,Python就是一種遊戲編程的輔助工具,在《星際大戰》的製作中扮演了重要的角色,現在,完全可以通過Python寫出非常棒的遊戲程序。
Emmmmm這個舉例不會暴露年齡吧……
這麼好這麼有用的Python,大家想要學習也就在情理之中啦~
想學習或是在學習python中有任何困難不懂的可以報名參加光環大數據的Python免費試聽課程,學習python有任何問題(學習方法,學習效率,如何就業),可以在課上咨詢實力派Python講師。