Python 應用領域及學習重點

您的“關注”和“點贊”,是信任,是認可,是支持,是動力......

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

筆者認爲不管學習什麼編程語言,首先要知道:學完之後在未來能做些什麼?

本文將淺談 Python 的應用領域及其在對應領域的學習重點。也僅是介紹了 Python 應用領域的“冰山一角”,有興趣的讀者可以再自行搜索資料進行了解。

Python 的應用領域是極其廣泛的,幾乎所有大中型互聯網企業都在使用 Python 完成各種各樣的任務。想詳細瞭解,請參見下文,如有不妥之處,敬請留言指正,筆者必會虛心採納。

一 Python 在世界上的知名應用

以下內容,將列舉出 Python 在大家所熟知的一些國內外公司企業中的應用。

1 國內應用

1.1 豆瓣

我們經常訪問的集電影、讀書、音樂於一身的豆瓣網,一開始就是使用 Python 作爲 Web 開發的基礎語言,幾乎所有的業務都是通過 Python 實現的。

1.2 知乎

國內最大的問答社區,知乎的整個架構都是基於 Python 開發的。

1.3 百度

如果說阿里巴巴主要是用 Java 語言,京東主要是用 Linux 和 Objective-C,華爲主要是用 C、Unix 或 Linux,那麼百度主要使用的就是 Python 和 PHP。

1.4 春雨醫生

國內知名在線醫療網站,是用 Python 開發實現。

當然,還有很多知名企業,例如新浪、搜狐、騰訊、阿里、網易、淘寶、汽車之家、美團等等企業或多或少都在使用 Python 完成各種各樣的任務。

2 國外應用

2.1 谷歌(Google)

全球最大的搜索引擎公司谷歌,在 Google App Engine、code.google.com、Google eaty、谷歌爬蟲、Google 廣告等項目的開發中都大量的使用到了 Python 。

2.2 YouTube

世界上最大的視頻網站 YouTube 就是用 Python 開發而成。

2.3 Facebook

Facebook 中大量的基礎庫都是通過 Python 來完成的。

2.4 Yahoo!Groups

雅虎推出的羣組交流平臺。

2.5 CIA

美國中情局,美國中情局網站就是用 Python 開發而成。

2.6 NASA

美國航天局,自 1997 年,NASA 就大量使用 Python 進行各種複雜的數據分析和運算。

2.7 Dropbox

美國最大的在線雲存儲網站,都是用 Python 實現,每天網站幾乎會處理10億個文件的下載和上傳。

2.8 Instagram

美國最大的圖片分享社交網站,每天超過3千萬張照片被上傳分享,也全部都是 Python 開發而成。

2.9 Redhat

包管理工具,世界上最流行的 Linux 發行版中用於 RPM 兼容的 yum 包管理工具就是 Python 開發的。

以上列舉出部分企業,當然還有很多的企業都在使用 Python。

二 總結 Python 應用領域及其學習重點

1 Web 應用開發

Python 經常被用於 Web 開發,儘管目前不屬於 Web 開發的主流語言,但 Python 上升勢頭很猛,尤其隨着 Python 的 Web 開發框架逐漸成熟作爲“助燃劑”,程序員可以更輕鬆地開發和管理複雜的 Web 程序,Python Web開發成爲一個不錯的選擇。

例如,通過 mod_wsgi 模塊,Apache 可以運行用 Python 編寫的 Web 程序。Python 定義了 WSGI 標準應用接口來協調 HTTP 服務器與基於 Python 的 Web 程序之間的通信。另外,Python+Django架構,應用範圍非常廣,開發速度非常快,學習門檻也很低,能夠幫助你快速的搭建起可用的WEB服務。

學習重點

  • Django

    Django 是高水準的 Python 編程語言驅動的一個開源模型。視圖,控制器風格的 Web 應用程序框架。使用這種框架程序員可以方便、快捷地創建高品質、易維護、數據庫驅動的應用程序。

  • Pyramid

    Pyramid是一個小型,快速的Python Web 應用程序框架,既適合開發大型項目,也適合小項目,它擁有非常好的性能。

  • Tornado

    Tornado 就是我們在 FriendFeed 的 Web 服務器及其常用工具的開源版本。Tornado 和主流 Web 服務器框架(包括大多數 Python的框架)有着明顯的區別:它是非阻塞式服務器,而且速度相當快。得利於其非阻塞的方式和對epoll的運用,Tornado 每秒可以處理數以千計的連接,因此 Tornado 是實時 Web 服務的一個理想框架。

  • Flask

    Flask是一個輕量級的可定製框架,使用Python語言編寫,較其他同類型框架更爲靈活、輕便、安全且容易上手。它可以很好地結合MVC模式進行開發,開發人員分工合作,小型團隊在短時間內就可以完成功能豐富的中小型網站或Web服務的實現。另外,Flask還有很強的定製性,用戶可以根據自己的需求來添加相應的功能,在保持核心功能簡單的同時實現功能的豐富與擴展,其強大的插件庫可以讓用戶實現個性化的網站定製,開發出功能強大的網站。

  • web.Py

    web.py 是一個輕量級Python web框架,它簡單而且功能強大。web.py是一個開源項目。該框架由已故美國作家Reddit聯合創始人、RSS規格合作創造者、著名計算機***Aaron Swartz開發。web.py已被很多家大型網站所使用。

  • Bottle

    Bottle是一個快速、簡潔、輕量級的基於WSIG的微型Web框架,此框架只由一個 .py 文件,除了Python的標準庫外,其不依賴任何其他模塊。

  • TurboGears

    TurboGears是一個提供網頁前端到後端整合的網站框架,使用 Python 動態語言。 Python 語言上有無數網頁開發模組可選擇。要挑選合適的模組會花上開發者寶貴的時間精力,TurboGears 就像是 Python 網頁開發上的發佈套件,整合各種推薦的 Python 開放源代碼模組,提供簡單易用的界面與一致的系統體驗。

  • Zope

    Zope是一個開放源代碼的Web應用服務器,Zope目前有2個比較獨立的版本,Zope 2系列和Zope 3系列。Zope 3是汲取了Zope 2的教訓,對Zope 2的重寫,是一個採用了現代設計模式的、基於組件架構的應用服務器。有人說Zope 3就是一個Python版本的輕量級J2EE框架。 Zope 2特別適合腳本開發人員,直接通過瀏覽器就可快速構建一個應用。

2 網絡編程

Python對於各種網絡協議的支持很完善,因此經常被用於編寫服務器軟件、網絡爬蟲等。例如 Python 提供了豐富的模塊支持 Socket(套接字) 編程,可以方便快速的開發分佈式應用程序。

學習重點

  • Twisted

    第三方庫Twisted支持異步網絡編程和多數標準的網絡協議(包含客戶端和服務器),並且提供了多種工具,被廣泛用於編寫高性能的服務器軟件。Twisted是用Python實現的基於事件驅動的網絡引擎框架,是python中一個強大的異步IO庫。理解twisted的一個前提是弄清楚twisted中幾個核心的概念: reactor, Protocl, ProtocolFactory, Deffered

  • Requests

    Requests是用Python語言編寫的,基於urllib3來改寫的,採用Apache2 Licensed 來源協議的HTTP庫。

    在處理URL資源上它比urllib更加方便,可以節約我們大量的工作,完全滿足HTTP測試需求。

  • Scrapy

    Scrapy是Python開發的一個快速、高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的數據。Scrapy用途廣泛,可以用於數據挖掘、監測和自動化測試。

  • Paramiko

    paramiko是基於Python實現的SSH2遠程安全連接,支持認證及密鑰方式。可以實現遠程命令執行、文件傳輸、中間SSH代理等功能,相對於Pexpect,封裝的層次更高,更貼近SSH協議的功能。

3 GUI 圖形開發(桌面應用)

Python 提供了PIL、Tkinter等圖形庫,能方便進行圖形處理。PyQt、PySide、wxPython、PyGTK是Python快速開發桌面應用程序的利器。

學習重點

  • wxPython

    wxPython是Python語言的一套優秀的GUI圖形庫。允許Python程序員很方便的創建完整的、功能鍵全的GUI用戶界面。 wxPython是作爲優秀的跨平臺GUI庫wxWidgets的Python封裝和Python模塊的方式提供給用戶的。

    比如安裝ulipad要安裝wxPython庫才能正常完整工作。

  • PyQT

    PyQt是一個創建GUI應用程序的工具包。它是Python編程語言和Qt庫的成功融合。Qt庫是目前最強大的庫之一。PyQt是由Phil Thompson 開發。

    PyQt實現了一個Python模塊集。它有超過300類,將近6000個函數和方法。它是一個多平臺的工具包,可以運行在所有主要操作系統上,包括UNIX,Windows和Mac。 PyQt採用雙許可證,開發人員可以選擇GPL和商業許可。在此之前,GPL的版本只能用在Unix上,從PyQt的版本4開始,GPL許可證可用於所有支持的平臺。

  • Kivy

    Kivy是開源Python函式庫,用於開發行動應用程序和其它採用自然用戶界面的多點觸控應用軟件。它可以在Android,iOS,Linux,OS X和Windows執行。採用MIT授權條款,Kivy是自由並且開源的軟件。

4 運維自動化

Python 是運維工程師的首選編程語言,在運維自動化領域已經深入人心。

Python 是跨平臺的,在很多操作系統中 Python 屬於標準的系統組件。例如大多數 Linux 發行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在終端下直接運行 Python。另外,Python 標準庫中包含了多個可用來調用操作系統功能的庫。例如,通過 pywin32 這個軟件包,我們能訪問 Windows 的 COM 服務以及其他 Windows API;使用IronPython,我們能夠直接調用 .Net Framework。

所以說,一般情況下 Python 編寫的系統管理腳本,無論是可讀性,還是性能、代碼重用度以及擴展性方面,都優於普通的 shell 腳本。

學習重點

  • OpenStack

    OpenStack是一個開源的雲計算管理平臺項目,是一系列軟件開源項目的組合。由NASA(美國國家航空航天局)和Rackspace合作研發併發起,以Apache許可證(Apache軟件基金會)發佈的一個自由軟件許可證)授權的開源代碼項目。

    OpenStack爲私有云和公有云提供可擴展的彈性的雲計算服務。項目目標是提供實施簡單、可大規模擴展、豐富、標準統一的雲計算管理平臺。

  • SaltStack

    SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。

    通過部署SaltStack,我們可以在成千萬臺服務器上做到批量執行命令,根據不同業務進行配置集中化管理、分發文件、採集服務器數據、操作系統基礎及軟件包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。

  • Ansible

    Ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。

  • 騰訊藍鯨

    藍鯨配置平臺是一款面向應用的CMDB,在ITIL體系裏,CMDB是構建其它流程的基石,而在藍鯨智雲體系裏,配置平臺扮演着基石的角色,爲應用提供了各種運維場景的配置數據服務。

5 人工智能領域

人工智能是目前非常火的一個研究方向,如果要評選當前最熱、工資最高的 IT 職位,那麼人工智能領域的工程師最有話語權。而 Python 在人工智能領域內的機器學習、神經網絡、深度學習等方面,都是主流的編程語言。

可以這麼說,基於大數據分析和深度學習發展而來的人工智能,其本質上已經無法離開 Python 的支持了,原因至少有以下幾點:

  1. 目前世界上優秀的人工智能學習框架,比如 Google 的 TransorFlow(神經網絡框架)、FaceBook 的 PyTorch(神經網絡框架)以及開源社區的 Karas 神經網絡庫等,都是用 Python 實現的;
  2. 微軟的 CNTK(認知工具包)也完全支持 Python,並且該公司開發的 VS Code,也已經把 Python 作爲第一級語言進行支持。
  3. Python 擅長進行科學計算和數據分析,支持各種數學運算,可以繪製出更高質量的 2D 和 3D 圖像。

總之,AI 時代的來臨,使得 Python 從衆多編程語言中脫穎而出,Python 作爲 AI 時代頭牌語言的位置,基本無人可撼動!

這一領域不適合初學者研究,在此不做學習重點闡述。

6 網絡爬蟲

能夠編寫網絡爬蟲的編程語言有很多,但是 Python 語言很早就用來編寫網絡爬蟲,並且絕對是主流語言之一,例如 Python 提供有很多服務於編寫網絡爬蟲的工具,像 urllib、Selenium 和 BeautifulSoup 等,還提供了一個網絡爬蟲框架 Scrapy就應用非常廣泛。

網絡爬蟲也稱爲網絡蜘蛛,是大數據行業獲取數據的核心工具。假如沒有網絡爬蟲自動的、不分晝夜的、高智能化的在互聯網上爬取免費的數據,那些大數據相關的公司恐怕要少四分之三。

學習重點

  • Scrapy

    Scrapy是Python開發的一個快速、高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的數據。Scrapy用途廣泛,可以用於數據挖掘、監測和自動化測試。

7 科學計算和數據分析

隨着 Python 在數據分析、可視化方面衆多程序庫的開發和完善,Python 越來越適合用於科學計算、繪製高質量的2D圖像、3D圖像。例如 NumPy、SciPy、Matplotlib、pandas 等,可以滿足 Python 程序員編寫科學計算程序。

學習重點

  • SciPy

    Scipy是一個用於數學、科學、工程領域的常用軟件包,可以處理插值、積分、優化、圖像處理、常微分方程數值解的求解、信號處理等問題。它用於有效計算Numpy矩陣,使Numpy和Scipy協同工作,高效解決問題。

  • NumPy

    NumPy(Numeric Python)提供了許多高級的數值編程工具,如:矩陣數據類型、矢量處理,以及精密的運算庫。專爲進行嚴格的數字處理而產生。多爲很多大型金融公司使用,以及核心的科學計算組織如:Lawrence Livermore,NASA用其處理一些本來使用C++,Fortran或Matlab等所做的任務。

  • Matplotlib

    Matplotlib 是一個 Python的 2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環境生成出版質量級別的圖形。

    通過 Matplotlib,開發者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。

  • Pandas

    pandas 是基於NumPy的一種工具,該工具是爲了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成爲強大而高效的數據分析環境的重要因素之一。

  • Ipython

    IPython 是一個 python 的交互式 shell,比默認的python shell 好用得多,支持變量自動補全,自動縮進,支持 bash shell 命令,內置了許多很有用的功能和函數。

    IPython 是基於BSD 開源的。

8 遊戲開發

很多遊戲使用 C++編寫圖形顯示等高性能模塊,而使用 Python 或 Lua 編寫遊戲的邏輯。和 Python 相比,Lua 的功能更簡單,體積更小;而 Python 則支持更多的特性和數據類型。

例如,Sid Meier's Civilization(文明遊戲,如下圖所示)就是使用 Python 實現的。

img

除此之外,Python 可以直接調用 Open GL 實現 3D 繪製,這是高性能遊戲引擎的技術基礎。事實上,有很多 Python 語言實現的遊戲引擎,例如 Pygame、Pyglet 以及 Cocos 2d 等。

如果對遊戲開發感興趣,可以研究一下這些遊戲引擎。

三 文章其他地址

1 微信公衆號:碼農阿杰

2 CSDN 博客

3 博客園

四 參考資料

1 Python 3.8.2 documentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章