1. 程式人生 > Python入門教學 >01 Python 語言簡介及其應用領域

01 Python 語言簡介及其應用領域

圖片描述

圖片來源於官網

1. Python 是一種易學易用、功能強大的高階程式設計語言

1.1 Python 是什麼

Python 是一種高階程式設計語言,用接近人類語言的方式描述計算的過程。例如,計算" 1 加 2"的結果並將結果列印輸出,使用 Python 完成這項功能,編寫的 Python 程式內容如下:

print(1 + 2)

這個 Python 程式首先計算 1 + 2,然後使用 print 的功能將 1 + 2 的結果輸出到螢幕,輸出結果為:

3

從這個程式可以直觀的感受到 Python 的簡單易學,即使沒有程式設計基礎,也能看懂和理解這段程式。

1.2 Python 的特色和優點

  • 入門簡單,對初學者友好

在介紹 Python 語言時,通常會提到 Python 是一門易學的程式語言,易學是 Python 最鮮明的特色。相對於 C、C++、Java 等程式語言,Python 的易學體現在它的學習曲線非常的平緩,如果學習曲線如果太陡峭,顯然不適合一般人去學習掌握,大部分人沒入門就放棄了。

今年 11 月15 日,年過半百的 SOHO 中國董事長潘石屹在微博上宣佈,正式開始學習Python,佔據了熱搜榜,表明了 Python 語言的簡單易學已經深入人心。

  • 高階語言,不用考慮底層硬體細節

程式設計語言被分類為高階語言和低階語言:使用低階語言編寫程式時,程式設計師需要考慮底層硬體細節,例如:手工的分配和釋放記憶體,程式編寫時繁瑣易錯;而使用高階語言編寫程式時,高階語言會自動的處理底層硬體細節,例如:自動的釋放不再使用的記憶體,程式設計師不用考慮底層硬體細節,專注於解決問題本身。

Python 是一種典型的高階語言,向程式設計師遮蔽了底層硬體細節。例如,Python 程式既可以在 x86 處理器上執行,也可以在 arm 處理器上執行,程式設計師不需要了解 x86 處理器和 arm 處理器的指令,就可以完成計算"1 加 2"這樣的任務。

  • 語法簡潔直觀

Python 語法接近自然語言,提供了很多簡潔、直觀和易於理解的表達方式,非常適用來描述求解問題的邏輯。實現相同程式功能時,Python 語言的程式碼行數僅相當於其他語言的 1/5 至 1/10。更少的程式碼行數、更簡潔的表達方式可減少程式錯誤以及縮短開發週期。

  • 強大的標準庫和第三方庫

Python 語言可以將複雜的功能封裝為模組(又稱為庫),將功能實現的細節隱藏起來,使用該模組(庫)的程式設計師不需要了解實現的細節。通過呼叫模組封裝好的功能,可以用僅僅幾行 Python 程式碼實現某項複雜的功能,例如可以用一行程式碼就實現一個 Web 伺服器。

在 Python 的應用領域中,如:web 開發、人工智慧、網路爬蟲、資料分析等領域,已經存在了大量的模組,程式使用這些模組就可以輕鬆開發出應用程式。

Python 的標準庫是隨著 Pyhon 安裝的時候預設自帶的庫,提供了有文字處理、系統管理、網路處理等功能。Python 的第三方庫,是由各家廠商和 Python 愛好者開發的庫,第三方庫需要下載後安裝到 Python 的安裝目錄下。強大的標準庫和第三方庫,讓 Python 程式設計師能夠輕鬆實現各種複雜的功能。

1.3 Python 的缺點

和 C、C++ 等程式語言相比,Python 程式的執行效能很差,這是 Python 語言最主要的缺點。例如,編寫一個以數學計算為主的程式,完成相同功能的 Python 程式的執行效能只有 C 程式的千分之一左右。

在實際的應用場景中,Python 的缺點並不會成為系統的瓶頸,原因如下:

  • 在應用領域中,程式執行時大部分時間進行的是 IO 處理,少部分時間進行數學計算。

  • 在 Web 後端開發中,Python 程式接受來自網路的請求,處理請求時讀寫資料庫,最後將處理結果通過網路返回,大量的時間花費在網路 IO 和資料庫 IO 上,因此 Python 的數學運算效能對程式的整體影響不大。

  • 發揮 C 語言和 Python 語言兩者各自的優勢,使用 C 語言完成對計算效能要求高的功能,使用 Python 語言封裝 C 語言實現的功能模組。

Python 的 NumPy (Numerical Python) 庫,是一個針對矩陣運算的數學函式庫,該庫由 Python 語言和 C 語言混合開發而成:底層的數學運算功能由 C 語言實現,面向使用者的介面使用 Python 語言實現。使用者使用 Python 語言呼叫底層的 C 語言模組,從而兼顧了開發效率和執行效率。

2. Python 的歷史和現狀

2.1 Python 的歷史

Python 的創始人為荷蘭人 Guido van Rossum。1982年,Guido 從阿姆斯特丹大學(University of Amsterdam)獲得了數學和計算機碩士學位。

Python 的創始人 Guido van Rossum

在80年代,個人電腦的配置很低,比如早期的 Macintosh,只有 8MHz 的 CPU 主頻和 128KB 的 RAM。為了增程序序的執行效率,程式語言也迫使程式設計師像計算機一樣思考,以便能寫出充分利用計算機效能的程式。

Guido 使用 C 語言的過程中,感受到 C 語言的開發效率很低,需要耗費大量的時間編寫 C 程式。他的另一個選擇是 Shell。 Shell 是 UNIX 作業系統提供的指令碼語言。UNIX 的管理員常常用 Shell 去寫一些簡單的指令碼,以進行一些系統維護的工作,比如定期備份。Shell 可以像膠水一樣,將 UNIX 下的許多功能連線在一起。許多 C 語言下上百行的程式,在 Shell 下只用幾行就可以完成。

Shell 的本質是呼叫命令來完成複雜的功能,它缺乏程式語言的若干重要特性。例如,Shell 缺乏複雜的資料結構:列表、字典、結構體,因此不適用於實現複雜的功能。Guido 希望有一種語言,這種語言能夠像 C 語言那樣,具備完整的程式語言特性,又可以像 Shell 那樣,具有很高的開發效率。

1989 年聖誕節期間,在阿姆斯特丹,Guido 為了打發聖誕節的無趣,決心開發一個新的程式語言 Python。Guido 將 Python(大蟒蛇)作為該程式語言的名字,是取自英國 20 世紀 70 年代首播的電視喜劇《蒙提.派森的飛行馬戲團》(Monty Python’s Flying Circus),因此 Python 語言的 logo 是一條蟒蛇。

圖片描述

Python 語言的 logo

1991 年,第一個 Python 直譯器誕生,它是用 C 語言實現的,又被稱為 CPython。Python 從一開始就具有良好的可擴充套件性,可以用 C 語言編寫模組,在 Python 程式中使用這些使用 C 語言開發的模組。

1999 年,Guido 向 DARPA 提交了一條名為 “Computer Programming for Everybody” 的資金申請,並在後來說明了他對 Python 的目標:

  • 一門簡單直觀的語言並與主要競爭者一樣強大
  • 開源,以便任何人都可以為它做貢獻
  • 程式碼像純英語那樣容易理解
  • 適用於短期開發的日常任務

這些想法中的基本都已經成為現實,Python 已經成為一門流行的程式語言。

2.2 Python 2 和 Python 3

Python 有兩個主要的版本: Python 2 與 Python 3。Python 3 相對於 Python 2 是一個重大的升級,Python 3 與 Python 2 兩者的語法不相容。最近這幾年 Python 3 的使用率急劇上升,Python 2 將逐步退出舞臺。因此,學習 Python 應該選擇 Python 3

2.3 Python 的現狀

Python 自 1989 年誕生以來,經歷了 30 年的發展,已經成為流行的程式語言之一。TIOBE 程式語言排行榜根據網際網路上程式設計師、教程和第三方廠商的數量,並使用搜索引擎統計出程式語言的排名資料,反映了某個程式語言的熱門程度。下圖為 2019 年 12 月份的 TIOBE 程式語言排行榜。TIOBE 程式語言排行榜表明 Python 語言的熱門程度已經成為僅次於 Java 語言 和 C 語言。

圖片描述

2019 年 12 月的 TIOBE 程式語言的排行榜

2017 年 10 月,教育部考試中心釋出《關於全國計算機等級考試體系調整的通知》,新增 Python 語言程式設計科目。2018 年 9 月,舉行了首考。Python 程式語言作為一種國家標準進入了中國的考試認證體系,這是一個里程碑性質的事件,意味著 Python 語言在國內教育領域得到官方的正式認同,在部分高校,Python 程式設計已經成為一門必修課程。無論是計算機專業的院系還是非計算機專業的院系,開設 Python 程式設計課程,已經成為一種趨勢。

圖片描述

Python 已經成為全國計算機等級考試二級科目

Python 在國內工業界得到了廣泛的應用和認可,並且Python 的人才易於培養和招聘,國內的網際網路的領頭企業提供了大量的和 Python 的工作崗位,下圖為騰訊釋出的 Python 的工作崗位。

圖片描述

騰訊招聘的 Python 工作崗位

3. Python 的應用領域

3.1 教學

Python 可以作為《程式設計語言》課程的教學語言,在教學領域得到了國際和國內知名高高校認可。以世界著名的麻省理工學院 (MIT)為例,《電腦科學及程式設計導論》在 MIT 的課程編號是 6.00.1,是 MIT 電腦科學及工程學院的經典課程。之前,課程一直使用 Scheme 作為教學語言,不過由於 Python 簡單、易學等原因,近年來已經改用 Python 作為教學語言了。

3.2 後端開發

在 Web 應用中,使用者通過瀏覽器向伺服器提交請求,伺服器接收到請求後,對使用者的請求進行處理,再將結果返回給使用者。例如,使用 baidu 搜尋引擎的過程如下:

  1. 使用者在 baidu 的搜尋框中,輸入關鍵字 “手機”,瀏覽器將關鍵字 “手機” 傳送到 baidu 的伺服器。
  2. baidu 伺服器收到查詢手機的請求,在資料庫查詢和手機相關的網頁,按照與關鍵詞的相關性進行排序,再將排序結果傳送給使用者。
  3. 瀏覽器收到伺服器的查詢結果後,顯示與 “手機” 相關的網頁列表。

在以上的 3 個步驟中,與使用者互動的部分稱之為前端,在伺服器處理的使用者請求的部分稱為後端。Python 提供了大量的模組和框架可以用於後端開發。有很多知名的網站後端採用了 Python,例如,國內的豆瓣就是一個應用Python打造的非常成功的 Web 2.0 站點。

3.3 網路爬蟲

網路爬蟲,又被稱為網頁蜘蛛、網路機器人,是一種按照一定的規則,自動地抓取網頁的程式。網路爬蟲把網站的網頁下載到在本地,然後對下載的網頁進行關鍵字提取和資料分析。例如,baidu 搜尋引擎使用到大量的網路爬蟲,過程如下:

  1. 選擇站點作為爬蟲的目標。
  2. 按照一定的策略,抓取該站點的網頁。
  3. 對下載的網頁進行關鍵字提取,建立索引。

Python 提供了大量的模組和框架可以用於網路爬蟲。例如,Python 提供了 requests 模組根據指定的 url 抓取網頁。Python 同時提供了網路爬蟲框架,例如 Scrapy,基於 Scapy 框架開發可以快速實現抓取 web 站點並從頁面中提取結構化的資料。

3.4 自動化運維

一個網際網路產品的生成一般經歷的過程是:需求分析、研發部門開發、測試部門測試、運維部門部署釋出以及長期的執行維護。執行維護的日程主要工作包括服務部署、服務監控等。運維的工作繁瑣重複,即使最謹慎的人,也會犯錯,尤其是面對著重複性工作。通過運維自動化工具來完成這樣的工作,錯誤率將大大降低。

Python 提供了各種自動化運維工具,能滿足絕大部分自動化運維的需求,包括:

  • 服務部署工具,當應用較為簡單時,只需要在少量伺服器上部署少量的服務,可以採用人工操作;當應用較複雜,需要在大量伺服器上部署大量的服務,採用服務部署工具可以一鍵實現在多臺伺服器上自動化部署多項服務。
  • 服務監控工具,對服務執行的狀態進行實時的監控,隨時發現服務的執行異常和資源消耗情況;對服務出現的任何異常進行及時處理,儘可能避免問題的擴大化甚至中止服務。

3.5 自動化測試

自動化測試,顧名思義是指自動完成測試工作。通過工具模擬人工的操作過程,並驗證其結果,這樣的測試過程,就是是自動化測試。自動化測試節約了批人力成本,讓機器執行大量的重複繁瑣的勞動。

Python 提供了眾多的自動化測試框架,可以實現:

  • 單元測試:簡化單元測試的編寫。
  • 對 GUI 程式的自動化測試:Python 提供了模擬滑鼠的單擊和移動、鍵盤輸入等功能,模擬使用者操作 GUI 程式。
  • Web 自動化測試:Python 提供了模擬滑鼠的單擊和移動、鍵盤輸入等功能,模擬使用者操作瀏覽器。
  • 效能測試:使用程式碼模擬大批量使用者,讓使用者併發請求,統計系統負載能力並生成報告。

3.6 資料分析

資料分析是指對資料蒐集、整理、分析,並依據資料做出評估和預測。現在是一個依靠資料競爭的時代,世界 500 強企業中,有 90% 以上都建立了資料分析部門。IBM、微軟、Google 等知名公司都積極投資資料業務,建立資料部門,培養資料分析團隊。

Python 提供了和資料分析相關的模組,典型的包括:

  • numpy,用於數學計算,如矩陣計算。
  • pandas,基於 numpy 資料分析工具,提供了大量能使我們快速便捷地處理資料的函式和方法。
  • matplotlib:用於資料結果的視覺化,將資料展現為散點圖、折線圖、直方圖、柱狀圖、餅圖等直觀的形式。

3.7 人工智慧

人工智慧(Artificial Intelligence),英文縮寫為 AI,它是研究、開發用於模擬、延伸和擴充套件人的智慧的理論、方法、技術及應用系統的一門新的技術科學。人工智慧的研究目標是使計算機能夠勝任一些通常需要人類智慧才能完成的複雜工作,例如:

  • 無人駕駛,通過車載感測系統感知道路環境、自動規劃行車路線並控制車輛到達預定目標。
  • 機器翻譯,將一種自然語言(例如英文)轉換為另一種自然語言(例如中文)。
  • 語音合成,將文字資訊轉變為可以聽得懂的、流利的人造語音。

Python 提供了相關的庫用於快速開發人工智慧的應用,使用者使用 Python 的 AI 庫時,不需要深入了人工智慧演算法的細節,極大的降低了人工智慧開發的門檻。

TensorFlow 是一個機器學習框架,其前身是谷歌的神經網路演算法庫,在計算機視覺、語音處理、推薦系統和自然語言處理等場景下有著豐富的應用,是目前最熱門的機器學習框架。TensorFlow 提供了 Python、C/C++、Java 等多種程式語言的介面,但是基於 Python 程式設計介面的 TensorFlow 框架進行開發是最常見的選擇。

Python 語言的語法簡潔、表達能力強,能簡單快速聚焦問題本身而不是繁瑣底層細節,成為了人工智慧程式設計首選的程式語言。

4. 用 Python 開發的著名專案

4.1 阿里雲 AI 開放平臺

阿里雲 AI (https://ai.aliyun.com) 致力於構建最全面、最開放、最前沿的AI開放平臺,從 2015 年開始,阿里雲推出 AI 產品,包括語音識別,還有影象識別、視覺識別等 130 多款細分產品,適用於 300 多個場景。

圖片描述

阿里雲的 AI 解決方案

阿里雲提供了提供最易用的 API、SDK 等開發元件,助力企業快速高效的實現產品升級。對每項產品提供多種程式設計介面,包括:Python、Java、C++、ios、Android、Restful 等。以語音合成為例,阿里雲 AI 的語音合成 Python SDK 提供瞭如下介面:

  • SpeechSynthesizer,設定語音合成請求引數,傳送語音合成請求。
  • SpeechSynthesizerCallback,用於獲取語音合成結果。

4.2 豆瓣網

豆瓣網 (douban) 是一個社群網站,提供關於書籍、電影、音樂等作品的資訊,還提供書影音推薦、線下同城活動、小組話題交流等多種服務功能。豆瓣網已經達擁有 300 萬註冊使用者,訪問量每天則超過兩千萬,是一個應用 Python 開發的非常成功的 Web 2.0 站點。

豆瓣網的後端採用了 Quixote 框架,Quixote 框架是一個使用 Python 開發的輕量級 Web 框架。

4.3 IDLE

Idle 是一個使用 Python 開發的整合開發環境 IDE。Idle 由 Python 官方開發和維護,在 Windows 作業系統中,安裝 Python 時會同時安裝 Idle。IDLE 提供了一個功能強大的偵錯程式,它還提供了一個多視窗文字編輯器,具有許多功能,包括多個撤消,Python 著色,智慧縮排,呼叫提示,自動完成等。

圖片描述

Python 內建的 IDE

4.4 Face Recognition

Face Recognition 是一個基於 Python 的人臉識別庫,它還提供了一個命令列工具,讓你通過命令列對任意資料夾中的影象進行人臉識別操作。該庫使用頂尖的深度學習人臉識別技術構建,在臉部檢測資料庫上的檢測準確率高達 99.38%。Face Recognition 的最基本功能是從影象中識別人臉,如下圖所示。

圖片描述

從影象中識別人臉

5. 小結

經過這個小節的學習,我們應該已經大致知道了 Python 到底是個什麼樣的程式語言。現如今,Python 可以說在各個程式設計領域大放異彩,很多公司也已經開始大量招聘 Python 人才,所以你是很有必要學習 Python 的。後面的小節中我會一一把 Python 的各種魅力呈現給大家,快來一起愉快的學習吧。