做者 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)。 轉載請註明出處。 原文:www.jianshu.com/p/a34eaffcc…html
《Python探索之旅》全系列python
上一課是 Python探索之旅 | 第一部分第二課:安裝Python和Python的經常使用開發軟件 。程序員
通過第一課的理論概念和第二課的 Python 開發環境安裝以後,咱們是時候來了解一下 Python 的解釋器了。編程
即便這一課的一些小測試看似沒什麼了不得的,但你卻能夠藉此對 Python 的語法有一個初步概念。我強烈建議你按部就班地跟着咱們動手練習,尤爲是若是 Python 是你的第一門編程語言的話。瀏覽器
和任何編程語言同樣,Python 具備清晰的語法:你不能隨便向 Python 發送任何信息。咱們將看到 Python 能夠接收什麼,不能夠接收什麼。bash
上一課,咱們在最後用 PyCharm 建立了一個 Python 的項目,而且建立了咱們的第一個 Python 文件(hello_python.py
),而後用項目配置的 Python 解釋器(就是咱們安裝的 Python 中自帶的解釋器。例如咱們上一課在 Windows 中安裝的 Python 解釋器的路徑是在 C:\Program Files\Python37\python.exe
)來運行此 Python 文件,輸出了:微信
Hello Python
複製代碼
像 PyCharm 這樣的 IDE(集成開發環境)已經把各類開發工具(代碼編輯器,解釋器,編譯器,調試器,等等)融合在一塊兒了。咱們使用 IDE 確實能夠大大加快開發速度,但不能幫助咱們理解編程的一些原理。編程語言
對了,順便一提,如今開發 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 的解釋器。
咱們以前安裝完 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()
,再按下回車。
以前咱們在 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 中,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 解釋器啊,我但願你爲我編寫一款出色的 3D 遊戲!」
目前來講,咱們還辦不到這一點。多年之後,也許可行。
所以,若是你在 Python 解釋器的命令提示符後面輸入某些內容,它極可能會清楚而堅決地告訴你:「我徹底沒有聽懂你在說什麼。」
例如,若是輸入 First test with Python
(表示「用Python進行的第一次測試」),則會獲得如下結果:
是的,Python 解釋器會說英語。對於絕大多數編程語言,你輸入的命令也是用英語寫的。
不過,若是你輸入的命令不符合 Python 的語法,那麼就像之前英語老師會跟你說「你的英語語法用錯了」同樣,Python 的解釋器也會以相似的方式通知你:SyntaxError: invalid syntax
(表示「語法錯誤:無效的語法」)。
很清楚不是嗎?你輸入的內容是 Python 解釋器所沒法理解的。不過,它並無「生氣」,由於它又爲你顯示了 >>>
這個命令提示符,代表它已準備好接受你的「再一次打擊」。
當咱們編寫 Python 代碼時,咱們會建立一個以 .py
爲擴展名的文件,在其中寫入 Python 的代碼。要運行代碼,就須要 Python 解釋器去執行這個 .py
文件。
Python 語言是開源的,因此理論上,只要水平夠好,任何人均可以編寫 Python 解釋器來執行 Python 代碼。實際上,確實存在多種 Python 解釋器。
咱們從 Python 的官方網站 www.python.org 下載並安裝好 Python 後,咱們就得到了一個官方版本的解釋器:CPython。
CPython 這個解釋器是用 C語言開發的(若是你要學習 C語言,能夠參看個人《C語言探索之旅》 系列教程)。
Python 之父在編寫 Python 語言時,最開始也是用 C語言的。在命令行下運行 python
啓動的就是 CPython 解釋器。
CPython 是使用最廣的 Python 解釋器。咱們的課程的代碼都會在 CPython 下執行。
CPython 解釋執行 Python 代碼的原理,簡單來講是像下面這樣的:
因此,在這一點上,Python 和 Java 仍是比較像的。
Jython 是運行在 Java 平臺上的 Python 解釋器,能夠把 Python 代碼編譯成 Java 字節碼執行。
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 是基於 CPython 之上的一個交互式解釋器。IPython 在交互方式上比 CPython 有所加強,可是執行 Python 代碼的原理和 CPython 是同樣的。比如不少瀏覽器雖然外觀不一樣,但內核其實都是調用了 Chromium。
咱們以後的課程會使用到的 Jupyter Notebook 就使用到了 IPython。Jupyter Notebook 之前是叫 IPython Notebook 的。
CPython 用 >>>
做爲提示符,IPython 用 In [序號]:
做爲提示符。
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… 。
咱們用 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 / 2
和 10 / 3
。
還有其餘兩個運算符,可讓咱們得到整數除法的結果以及除法的剩餘部分。
第一個運算符是 //
(兩個斜槓),這樣就能夠獲得除法的整數部分。
例如,咱們輸入 10 // 3
。
第二個運算符是被稱爲「取模」的運算符 %
,可讓咱們獲取除法的剩餘部分。
例如,咱們輸入 10 % 3
。
10 除以 3 的整數部分,是該除法的結果,不考慮小數點後的數字(在咱們的示例中是 3)。
爲了得到除法的模,咱們取其他數。在咱們的示例中,10 除以 3 等於 3,餘數是 1。
Python 的解釋器是運行 Python 程序必不可少的組件。實際的流程是,先編譯 Python 代碼爲字節碼,再對字節碼解釋執行。
Python 的解釋器根據實現不一樣分爲不少種,Python 官方提供的是 C語言寫的 CPython,其餘還有 Jython,RubyPython,IPython,等等。
Python 的解釋器(交互模式)容許你在編寫代碼時就對其進行測試,很是方便。
Python 解釋器能夠接受數字,並可以執行計算。
有時,涉及小數的計算會得出近似的結果,這也是爲何咱們更喜歡使用整數的緣由。
今天的課就到這裏,一塊兒加油吧!
下一課:Python探索之旅 | 第一部分第四課:變量的奇幻世界
我是 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)運營者,慕課網精英講師 Oscar 老師,終生學習者。 熱愛生活,喜歡游泳,略懂烹飪。 人生格言:「向着標杆直跑」