1. 程式人生 > >Python基礎-day01

Python基礎-day01

認識 Python

人生苦短,我用 Python —— Life is short, you need Python

目標

  • Python 的起源
  • 為什麼要用 Python?
  • Python 的特點
  • Python 的優缺點

01. Python 的起源

Python 的創始人為吉多·範羅蘇姆(Guido van Rossum)

  1. 1989 年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的解釋程式,作為 ABC 語言的一種繼承(感覺下什麼叫牛人)
  2. ABC 是由吉多參加設計的一種教學語言,就吉多本人看來,ABC 這種語言非常優美和強大,是專門為非專業程式設計師設計的。但是 ABC 語言並沒有成功,究其原因,吉多認為是非開放造成的。吉多決心在 Python 中避免這一錯誤,並獲取了非常好的效果
  3. 之所以選中 Python(蟒蛇) 作為程式的名字,是因為他是 BBC 電視劇——蒙提·派森的飛行馬戲團(Monty Python's Flying Circus)的愛好者
  4. 1991 年,第一個 Python 直譯器 誕生,它是用 C 語言實現的,並能夠呼叫 C 語言的庫檔案

1.1 直譯器(科普)

計算機不能直接理解任何除機器語言以外的語言,所以必須要把程式設計師所寫的程式語言翻譯成機器語言,計算機才能執行程式。將其他語言翻譯成機器語言的工具,被稱為編譯器

編譯器翻譯的方式有兩種:一個是編譯,另外一個是解釋。兩種方式之間的區別在於翻譯時間點的不同。當編譯器以解釋方式執行的時候,也稱之為直譯器

  • 編譯型語言:程式在執行之前需要一個專門的編譯過程,把程式編譯成為機器語言的檔案,執行時不需要重新翻譯,直接使用編譯的結果就行了。程式執行效率高,依賴編譯器,跨平臺性差些。如 C、C++
  • 解釋型語言:解釋型語言編寫的程式不進行預先編譯,以文字方式儲存程式程式碼,會將程式碼一句一句直接執行。在釋出程式時,看起來省了道編譯工序,但是在執行程式的時候,必須先解釋再執行

編譯型語言和解釋型語言對比

  • 速度 —— 編譯型語言比解釋型語言執行速度快
  • 跨平臺性 —— 解釋型語言比編譯型語言跨平臺性好

1.2 Python 的設計目標

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

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

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

1.3 Python 的設計哲學

  1. 優雅
  2. 明確
  3. 簡單
  • Python 開發者的哲學是:用一種方法,最好是隻有一種方法來做一件事
  • 如果面臨多種選擇,Python 開發者一般會拒絕花俏的語法,而選擇明確沒有或者很少有歧義的語法

在 Python 社群,吉多被稱為“仁慈的獨裁者”

02. 為什麼選擇 Python?

  • 程式碼量少
  • ……

同一樣問題,用不同的語言解決,程式碼量差距還是很多的,一般情況下 PythonJava 的 1/5,所以說 人生苦短,我用 Python

03. Python 特點

  • Python 是完全面向物件的語言
    • 函式、模組、數字、字串都是物件,在 Python 中一切皆物件
    • 完全支援繼承、過載、多重繼承
    • 支援過載運算子,也支援泛型設計
  • Python 擁有一個強大的標準庫,Python 語言的核心只包含 數字、字串、列表、字典、檔案 等常見型別和函式,而由 Python 標準庫提供了 系統管理、網路通訊、文字處理、資料庫介面、圖形系統、XML 處理 等額外的功能
  • Python 社群提供了大量的第三方模組,使用方式與標準庫類似。它們的功能覆蓋 科學計算、人工智慧、機器學習、Web 開發、資料庫介面、圖形系統 多個領域

面向物件的思維方式

  • 面向物件 是一種 思維方式,也是一門 程式設計技術
  • 要解決一個問題前,首先考慮 由誰 來做,怎麼做事情是 誰 的職責,最後把事情做好就行!
    • 物件 就是 誰
  • 要解決複雜的問題,就可以找多個不同的物件,各司其職,共同實現,最終完成需求

04. Python 的優缺點

4.1 優點

  • 簡單、易學
  • 免費、開源
  • 面向物件
  • 豐富的庫
  • 可擴充套件性
    • 如果需要一段關鍵程式碼執行得更快或者希望某些演算法不公開,可以把這部分程式用 CC++ 編寫,然後在 Python 程式中使用它們
  • ……

4.2 缺點

  • 執行速度
  • 國內市場較小
  • 中文資料匱乏