zoukankan      html  css  js  c++  java
  • Python探索之旅 | 第一部分第三课:初识Python的解释器

    作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。
    转载请注明出处。
    原文:https://www.jianshu.com/p/a34eaffcc420

    《Python探索之旅》全系列

    内容简介


    1. 前言
    2. Python 的解释器
    3. Python 解释器的种类
    4. 做一点数学运算
    5. 总结
    6. 第一部分第三课预告

    1. 前言


    上一课是 Python探索之旅 | 第一部分第二课:安装Python和Python的常用开发软件

    经过第一课的理论概念和第二课的 Python 开发环境安装之后,我们是时候来了解一下 Python 的解释器了。

    即使这一课的一些小测试看似没什么了不起的,但你却可以借此对 Python 的语法有一个初步概念。我强烈建议你循序渐进地跟着我们动手练习,尤其是如果 Python 是你的第一门编程语言的话。

    和任何编程语言一样,Python 具有清晰的语法:你不能随便向 Python 发送任何信息。我们将看到 Python 可以接收什么,不可以接收什么。

    2. Python 的解释器


    上一课,我们在最后用 PyCharm 创建了一个 Python 的项目,并且创建了我们的第一个 Python 文件(hello_python.py),然后用项目配置的 Python 解释器(就是我们安装的 Python 中自带的解释器。例如我们上一课在 Windows 中安装的 Python 解释器的路径是在 C:Program FilesPython37python.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 的官网是 https://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。用快捷键【Windows键 + 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 的官方网站 https://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 的不同点:https://doc.pypy.org/en/latest/cpython_differences.html

    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 老师,终生学习者。
    热爱生活,喜欢游泳,略懂烹饪。
    人生格言:「向着标杆直跑」

  • 相关阅读:
    Sublime Text 3——插件配置篇
    Sublime Text 3——基本介绍篇
    线性同余方程
    费马小定理
    一点心事
    寒诗
    e网通学习笔记
    std::cout<<"Goodbye 2019"<<" "<<"Hello 2020"<<' ';
    新砍
    NOIP2019游记
  • 原文地址:https://www.cnblogs.com/frogoscar/p/13237510.html
Copyright © 2011-2022 走看看