做者 谢恩铭,公众号「程序员联盟」(微信号: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 老师,终生学习者。 热爱生活,喜欢游泳,略懂烹饪。 人生格言:「向着标杆直跑」