Python探索之旅 | 第一部分第三課:初識Python的解釋器

做者 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)。 轉載請註明出處。 原文:www.jianshu.com/p/a34eaffcc…html

《Python探索之旅》全系列python

內容簡介


  1. 前言
  2. Python 的解釋器
  3. Python 解釋器的種類
  4. 作一點數學運算
  5. 總結
  6. 第一部分第三課預告

1. 前言


上一課是 Python探索之旅 | 第一部分第二課:安裝Python和Python的經常使用開發軟件程序員

通過第一課的理論概念和第二課的 Python 開發環境安裝以後,咱們是時候來了解一下 Python 的解釋器了。編程

即便這一課的一些小測試看似沒什麼了不得的,但你卻能夠藉此對 Python 的語法有一個初步概念。我強烈建議你按部就班地跟着咱們動手練習,尤爲是若是 Python 是你的第一門編程語言的話。瀏覽器

和任何編程語言同樣,Python 具備清晰的語法:你不能隨便向 Python 發送任何信息。咱們將看到 Python 能夠接收什麼,不能夠接收什麼。bash

2. Python 的解釋器


上一課,咱們在最後用 PyCharm 建立了一個 Python 的項目,而且建立了咱們的第一個 Python 文件(hello_python.py),而後用項目配置的 Python 解釋器(就是咱們安裝的 Python 中自帶的解釋器。例如咱們上一課在 Windows 中安裝的 Python 解釋器的路徑是在 C:\Program Files\Python37\python.exe)來運行此 Python 文件,輸出了:微信

Hello Python
複製代碼

像 PyCharm 這樣的 IDE(集成開發環境)已經把各類開發工具(代碼編輯器,解釋器,編譯器,調試器,等等)融合在一塊兒了。咱們使用 IDE 確實能夠大大加快開發速度,但不能幫助咱們理解編程的一些原理。編程語言

順便一提:強大的 Visual Studio Code


對了,順便一提,如今開發 Python,除了 PyCharm 這個強大的 IDE,你也可使用 Visual Studio Code(簡稱 VS Code)這個微軟開源的代碼編輯器。編輯器

雖然說 VS Code 自己是一個代碼編輯器,可是它豐富的插件卻能夠將其變成一個不俗的 IDE。VS Code 跨平臺(在 Windows,Linux 和 macOS 中均可以運行),體積小,速度快,如今已經成爲了不少開發者的最愛。工具

若是你不想安裝 JetBrains 家的比較大型的 IDE,也能夠試試 VS Code。

VS Code 的官網是 code.visualstudio.com 。下載後安裝很是簡單,就和安裝普通軟件沒什麼區別。

打開 VS Code 後,針對某種編程語言例如 Python,只須要安裝對應的官方插件(由微軟開發),便可運行和調試該語言,也就是搖身一變成爲該語言的 IDE 了。

例如我在 VS Code 中安裝了微軟官方的 Python 插件。

而後,我在 VS Code 中建立一個文件,就叫 hello_python.py,和上一課在 PyCharm 中建立的文件同名。

hello_python.py 中寫入 print("Hello Python")。運行此 Python 文件,就獲得和在 PyCharm 中同樣的輸出:

Hello Python
複製代碼

這些年微軟自從 薩提亞·納德拉(Satya Nadella)擔任 CEO 以後,逐漸擁抱開源,確實爲互聯網領域作出了很多貢獻。

固然了,咱們這門課程仍是會使用 PyCharm 做爲開發工具。我介紹 VS Code,主要是爲你們提供更多的可能性。

好了,說回咱們的 Python 解釋器。

咱們以前說過,Python 是解釋型語言,Python 文件要被解釋器解釋執行。

固然了,其實 Python 也和 Java 相似,是先編譯後解釋的語言。Python 的源代碼會先被編譯成字節碼(ByteCode)文件(.pyc 文件,相似 Java 的 .class 文件),字節碼文件再被解釋執行。 這塊知識可能對於新手來講有點難理解。暫時你就記住 Python 須要一個解釋器來執行也夠了。

解釋器的英語單詞是 interpreter。

咱們來看一下在三大主流操做系統中,如何調出(或稱運行)Python 的解釋器。

在 Windows 中


咱們以前安裝完 Python 以後,在 Windows 的開始菜單中就有了一個 Python 文件夾。

點擊上圖中紅框標出的那個 Python 3.7 (64-bit),就以 Console(控制檯)的形式打開 Python 的解釋器,打開以後就進入了交互模式(interactive mode)。

能夠看到,Python 解釋器運行在交互模式的時候,最開頭是 Python 的歡迎信息,例如版本號(這裏是 3.7.8),版權聲明,等等。

你能夠看到有一個 >>> 的符號,這是它的主提示符(primary prompt),提示輸入下一條指令。你能夠在 >>> 後面輸入指令,按下回車,就會由 Python 解釋器來執行指令。

Python 的解釋器是 Python 的一大優點,很方便咱們進行一些測試。其餘語言如 C語言,Java 和 C++ 這些編譯型語言,可能沒有這麼方便測試代碼的方式。

除了這種調出 Python 解釋器的方式,咱們還能夠用 Windows 的命令提示符來運行 Python 解釋器。

Windows 的命令提示符一般也被稱爲 CMD。用快捷鍵 Ctrl + r,而後輸入 cmd,再回車,就能夠打開命令提示符。在命令提示符中輸入 python,就運行了 Python 的解釋器。

要退出 Python 的解釋器,咱們能夠輸入 quit()exit(),再按下回車。

在 Linux 中


以前咱們在 CentOS 這個 Linux 發行版中演示瞭如何安裝 Python 最新穩定版。

一旦你在 Linux 中安裝了 Python,那麼它會自動爲你建立一個到 Python 解釋器的連接,例如 python 3.x(x 是次版本號。例如 Python 3.7.8,那麼它的次版本號就是 7)。

咱們以前安裝的是 Python 3.7.8 這個最新穩定版。所以,咱們先打開 Linux 的 Terminal(終端),

在終端中輸入 python3.7(由於咱們安裝的是 Python 3.7.8),能夠看到 Python 的解釋器(交互模式)就被運行起來了:

在 Linux 中,要退出 Python 的解釋器,能夠輸入 quit()exit(),再按下回車。此外,咱們也能夠用快捷鍵 Ctrl + d。

在 macOS 中


在 macOS 中,Python 通常是被安裝到 Applications(應用程序)的目錄中。依次點擊 「前往」 -> 「應用程序」(也能夠直接用快捷鍵 Cmd + Shift + a)。

點擊「應用程序」,進入應用程序的文件夾。能夠看到,Python 3.7.8 建立了一個文件夾,名叫 Python 3.7

咱們進入 Python 3.7 這個文件夾。能夠看到如下內容:

咱們運行那個 IDLE(Integrated Development and Learning Environment 的縮寫,表示「集成開發和學習環境」。IDLE 具有基本的 IDE 的功能,是非商業 Python 開發的不錯的選擇)。

在 macOS 下,除了用 IDLE,咱們也能夠在 Terminal(終端)中運行 Python 的解釋器(交互模式)。

macOS 下的 Terminal,位於「前往」 -> 「實用工具」(也能夠直接用快捷鍵 Cmd + Shift + u)。固然了,你也能夠直接在 Spotlight(聚焦搜索)中直接輸入 terminal 來打開。

打開 Terminal 後,輸入 python3.7(由於咱們安裝的是 Python 3.7.8),能夠看到 Python 的解釋器(交互模式)就被運行起來了。

在 macOS 中,要退出 Python 的解釋器,能夠輸入 quit()exit(),再按下回車。此外,咱們也能夠用快捷鍵 Ctrl + d。

Python 解釋器吃什麼?


咱們已經演示了在三大主流操做系統中如何運行 Python 的解釋器。那麼,Python 的解釋器到底吃什麼(就是它能夠接受什麼命令)呢?

正如咱們所說的那樣,編程語言遵循清晰的語法。你不可能指望 Python 的解釋器能理解如下內容:「親愛的 Python 解釋器啊,我但願你爲我編寫一款出色的 3D 遊戲!」

目前來講,咱們還辦不到這一點。多年之後,也許可行。

所以,若是你在 Python 解釋器的命令提示符後面輸入某些內容,它極可能會清楚而堅決地告訴你:「我徹底沒有聽懂你在說什麼。」

例如,若是輸入 First test with Python(表示「用Python進行的第一次測試」),則會獲得如下結果:

是的,Python 解釋器會說英語。對於絕大多數編程語言,你輸入的命令也是用英語寫的。

不過,若是你輸入的命令不符合 Python 的語法,那麼就像之前英語老師會跟你說「你的英語語法用錯了」同樣,Python 的解釋器也會以相似的方式通知你:SyntaxError: invalid syntax(表示「語法錯誤:無效的語法」)。

很清楚不是嗎?你輸入的內容是 Python 解釋器所沒法理解的。不過,它並無「生氣」,由於它又爲你顯示了 >>> 這個命令提示符,代表它已準備好接受你的「再一次打擊」。

3. Python 解釋器的種類


當咱們編寫 Python 代碼時,咱們會建立一個以 .py 爲擴展名的文件,在其中寫入 Python 的代碼。要運行代碼,就須要 Python 解釋器去執行這個 .py 文件。

Python 語言是開源的,因此理論上,只要水平夠好,任何人均可以編寫 Python 解釋器來執行 Python 代碼。實際上,確實存在多種 Python 解釋器。

CPython


咱們從 Python 的官方網站 www.python.org 下載並安裝好 Python 後,咱們就得到了一個官方版本的解釋器:CPython。

CPython 這個解釋器是用 C語言開發的(若是你要學習 C語言,能夠參看個人《C語言探索之旅》 系列教程)。

Python 之父在編寫 Python 語言時,最開始也是用 C語言的。在命令行下運行 python 啓動的就是 CPython 解釋器。

CPython 是使用最廣的 Python 解釋器。咱們的課程的代碼都會在 CPython 下執行。

CPython 解釋執行 Python 代碼的原理,簡單來講是像下面這樣的:

  1. CPython 將 Python 代碼編譯爲 ByteCode(字節碼)。
  2. CPython 解釋器中的虛擬機執行這些字節碼。

因此,在這一點上,Python 和 Java 仍是比較像的。

Jython


Jython 是運行在 Java 平臺上的 Python 解釋器,能夠把 Python 代碼編譯成 Java 字節碼執行。

IronPython


IronPython 和 Jython 相似。IronPython 是運行在微軟的 .Net 平臺上的 Python 解釋器,能夠把 Python 的代碼編譯成 .Net 的字節碼。

相似的還有如 RubyPython,Brython,等等。可見下表:

實現 虛擬機 兼容的語言
CPython CPython VM C
Jython JVM Java
IronPython CLR C#
RubyPython Ruby VM Ruby
Brython JavaScript 引擎(例如:V8) JavaScript

IPython


IPython 是基於 CPython 之上的一個交互式解釋器。IPython 在交互方式上比 CPython 有所加強,可是執行 Python 代碼的原理和 CPython 是同樣的。比如不少瀏覽器雖然外觀不一樣,但內核其實都是調用了 Chromium。

咱們以後的課程會使用到的 Jupyter Notebook 就使用到了 IPython。Jupyter Notebook 之前是叫 IPython Notebook 的。

CPython 用 >>> 做爲提示符,IPython 用 In [序號]: 做爲提示符。

PyPy


PyPy 是另外一個 Python 解釋器,它的目標是執行速度。PyPy 採用 JIT(Just-In-Time,表示「即時」)編譯技術,對 Python 代碼進行動態編譯,能夠顯著提升 Python 代碼的執行速度。Java 的 HotSpot 虛擬機也使用到了 JIT 技術。

絕大部分 Python 代碼均可以在 PyPy 下運行,可是 PyPy 和 CPython 有一些不一樣,相同的 Python 代碼在兩種解釋器下執行可能會有不一樣的結果。若是你的代碼要在 PyPy 下執行,須要瞭解 PyPy和 CPython 的不一樣點:doc.pypy.org/en/latest/c…

4. 作一點數學運算


咱們用 Python 的解釋器來作一些運算。這些運算是比較簡單的,不過,我認爲這是幫助你逐步瞭解 Python 語法的好方法。

輸入一個數字


咱們能夠在 Python 解釋器中輸入一個數字,例如 7 這個整數,而後按下回車。

能夠看到,沒有什麼特別的。咱們輸入一個數字,Python 解釋器將其原樣輸出。

可是,這種簡單的返回代表 Python 解釋器正確理解了你的輸入,而且你的輸入符合其語法。

一樣,你也能夠輸入浮點數,例如咱們輸入 7.2

不用說,咱們也能夠輸入負數,例如咱們輸入 -1.5

經常使用的運算


好了,是時候學習如何使用 Python 的主要運算符了。大部分時候,這些運算符已經足夠知足咱們用 Python 進行的計算了。

加、減、乘、除

爲了執行這些基本運算,咱們須要分別使用符號 +(加),-(減),*(乘) 和 /(除)。

爲何最後一個結果(3.12 + 2.18 的結果)是一個近似值呢?3.12 + 2.18 不是應該等於 5.3 嗎?爲何它輸出的倒是 5.300000000000001 呢?

其實,這和 Python 沒有太多關係,問題主要出在你的計算機將浮點數寫入內存的方式。這也是爲何在編程中,咱們儘量多地使用整數的緣由。

不過,偏差是很小的,不會對計算產生太多實際影響。須要很是高精度計算的應用程序會試圖經過其餘方法克服這些缺陷,可是通常來講咱們沒必要在乎。

你能夠用一樣的方式測試 減法,乘法和除法。

整除和取模運算


若是你測試除法,你將發現結果是浮點數。

例如,咱們輸入 10 / 210 / 3

還有其餘兩個運算符,可讓咱們得到整數除法的結果以及除法的剩餘部分。

第一個運算符是 //(兩個斜槓),這樣就能夠獲得除法的整數部分。

例如,咱們輸入 10 // 3

第二個運算符是被稱爲「取模」的運算符 ,可讓咱們獲取除法的剩餘部分。

例如,咱們輸入 10 % 3

  • 10 除以 3 的整數部分,是該除法的結果,不考慮小數點後的數字(在咱們的示例中是 3)。

  • 爲了得到除法的模,咱們取其他數。在咱們的示例中,10 除以 3 等於 3,餘數是 1。

5. 總結


  • Python 的解釋器是運行 Python 程序必不可少的組件。實際的流程是,先編譯 Python 代碼爲字節碼,再對字節碼解釋執行。

  • Python 的解釋器根據實現不一樣分爲不少種,Python 官方提供的是 C語言寫的 CPython,其餘還有 Jython,RubyPython,IPython,等等。

  • Python 的解釋器(交互模式)容許你在編寫代碼時就對其進行測試,很是方便。

  • Python 解釋器能夠接受數字,並可以執行計算。

  • 有時,涉及小數的計算會得出近似的結果,這也是爲何咱們更喜歡使用整數的緣由。

6. 第一部分第四課預告


今天的課就到這裏,一塊兒加油吧!

下一課:Python探索之旅 | 第一部分第四課:變量的奇幻世界


我是 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)運營者,慕課網精英講師 Oscar 老師,終生學習者。 熱愛生活,喜歡游泳,略懂烹飪。 人生格言:「向着標杆直跑」

相關文章
相關標籤/搜索