深入认识python_深入了解Python解释器

Introduction

Python 编程语言已经存在很长一段时间了。始于 1989 年 Guido Van Rossum 开发的第一个版本,从那时起,它已经成长为一种非常受欢迎的语言,应用范围从图形界面到财务和数据分析。

本文的目的是深入了解 Python 解释器,并对 Python 程序的执行方式提供一个概念性的概述。本文中提到的都是 CPython,CPython 是 Python 最流行的实现,被认为是标准。

本文中任何提到 Python 的地方都是指 CPython ,它是用C语言实现的Python 的版本。当然还有其他版本,比如 Python 实现的 PyPy,Jython是在 Java 虚拟机中的实现的 Python。

我把 Python 程序的执行分为下面列出的两个或三个主要阶段,具体取决于如何调用解释器,这些在本报告的不同衡量标准中有所涉及:

初始化(Initialization):这涉及到 Python 进程所需的各种数据结构的设置,这可能只在通过解释器 shell 非交互地执行程序时才有效。

编译(Compiling): 这涉及解析源代码以构建语法树,创建抽象语法树,构建符号表和生成代码对象等活动

解释(Interpreting):这涉及在某些上下文中实际执行生成的代码对象

从源代码生成解析树和抽象语法树的过程与语言无关,所以应用于其他语言的方法也适用于 Python。 因此,这里不过多的讨论这个问题。另一方面,从抽象语法树构建符号表和代码对象的过程是编译阶段中比较有趣的部分,它以一种或多或少的特定方式进行处理,受到了人们的关注。还包括对已编译的代码对象的解释以及该过程中使用的所有数据结构,涉及的主题包括但不限于构建符号表和生成代码对象,Python 对象,框架对象,代码对象,函数对象,Python操作码,解释器循环,生成器和用户定义的类的过程。

本文面向的是有兴趣深入了解 CPython 虚拟机功能的人。假设用户已经熟悉 Python 并理解该语言的基础知识。

作为虚拟机上展示的一部分,我们会经历大量的 C 代码,因此对 C 有基本了解的用户会发现更容易理解,毕竟,完成这些材料所需要的只是想要了解CPython 虚拟机的渴望。

这项工作是在调​​查 Python 解释器的内部工作时所做的个人笔记的扩展版本Pycon viedos,School letcures,blogs write-ups这几个视频和博客的内容不错,推荐大家看看。

在本书的最后,用户应该能够理解Python解释器如何执行程序的复杂性,

这包括执行该程序所涉及的各种步骤以及对该程序的执行至关重要的各种数据结构。我们从一个温和的鸟瞰图开始,通过在命令行将模块名传递给解释器来执行一个微不足道的程序时会发生什么,可以按照Python开发人员指南中的说明从源代码安装CPython可执行文件。在本文中使用的是Python3。

The View From 30,000ft

本章提供了关于解释器如何执行python程序的高级公开。 在随后的章节中,我们将放大拼图的各个部分,并提供有关此类拼图的更详细说明。 无论python程序的复杂程度如何,这个过程都是一样的。 Yaniv Aknin在他的Python内部系列中提供的这个过程的出色解释为这次讨论提供了一些基础和动机。

给定一个python模块test.py,该模块可以在命令行上执行,方法是将其作为参数传递给python解释程序,如$python test.py。这只是调用python可执行文件的一种方法——我们可以启动交互式解释器,以代码的形式执行字符串等等,但是我们对这些其他的执行方法不感兴趣,当模块作为参数传递给命令行上的可执行文件时,图2.1最好地捕获实际执行所提供模块所涉及的各种活动的流程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值