Python程序执行的第一个步骤的详细介绍

开发 后端
本文会涉及到Python程序执行的5个相关步骤简介,以及Python程序执行第一个步骤的具体介绍。以下是文章的相关内容的介绍。

我们大家都知道的是Python程序执行可分为5个步骤,那么本文将介绍Python程序执行的第一个步骤,也就是我们所说的词法分析,如果你对Python程序执行的第一个步骤感兴趣的话,你就可以点击以下的文章。

Python源码分析3 – 词法分析器PyTokenizer 收藏
Introduction
上次我们分析了Python程序执行可分为5个步骤:

Tokenizer进行词法分析,把源程序分解为Token

Parser根据Token创建CST

CST被转换为AST

AST被编译为字节码

执行字节码

本文将介绍Python程序执行的第一步,也就是词法分析。

词法分析简单来说就是把源程序的字符分解组合成Token。

比如sum=0可以分解成3个token,'sum', '=', '0'。程序中的whitespace通常只作为分隔符用,最终会被忽略掉,因此没有出现在token的列表中。不过在Python之中,由于语法规则的关系,Tab/Space需要用来分析程序的缩进,因此Python中对于Whitespace的处理比一般C/C++编译器的处理会要稍微复杂一些。

在Python中词法分析的实现在Parser目录下的tokenizer.h和tokenizer.cpp。Python的其他部分会直接调用tokenizer.h中定义的函数,如下:

 

  1. extern struct tok_state
     *PyTokenizer_FromString
    (const char *);   
  2. extern struct tok_state 
    *PyTokenizer_FromFile
    (FILE *, char *, char *);   
  3. extern void PyTokenizer_Free
    (struct tok_state *);   
  4. extern int PyTokenizer_Get
    (struct tok_state *, char **, char **); 

这些函数均以PyTokenizer开头。这是Python源代码中的一个约定。虽然Python是用C语言实现的,其实现方式借鉴了很多面对对象的思想。拿词法分析来说,这四个函数均可以看作PyTokenizer的成员函数。

头两个函数PyTokenizer_FromXXXX可以看作是构造函数,返回PyTokenizer的instance。PyTokenizer对象内部状态,也就是成员变量,储存在tok_state之中。PyTokenizer_Free可以看作是析构函数,负责释放PyTokenizer,也就是tok_state所占用的内存。

PyTokenizer_Get则是PyTokenizer的一个成员函数,负责取得在字符流中下一个Token。这两个函数均需要传入tok_state的指针,和C++中需要隐含传入this指针给成员函数的道理是一致的。可以看到,OO的思想其实是和语言无关的,即使是C这样的结构化的语言,也可以写出面对对象的程序。

 

以上就是Python程序执行的第一步,也就是词法分析相关的内容的介绍,忘你会有所收获。

【编辑推荐】

  1. mod_python在性能上要优于传统CGI的缘由
  2. Python中文转换url编码的实际操作步骤介绍
  3. Python学习入门中的先搭环境的具体应用的方法介绍
  4. Python源码分析的实际相关操作步骤解析
  5. Python安装的步骤操作其实是件很容易的事
责任编辑:佚名 来源: 互联网
相关推荐

2013-10-30 22:10:28

Clouda程序

2010-03-25 13:05:00

Python执行代码

2010-03-25 16:51:12

Python程序

2024-06-07 08:59:35

2024-03-13 13:53:10

C++程序开发

2023-05-19 08:49:58

SQLAlchemy数据库

2012-05-25 15:20:38

XNA

2009-06-26 16:07:43

MyEclipse开发Hibernate程序

2023-06-01 08:24:08

OpenAIChatGPTPython

2019-12-31 08:00:00

DebianLinuxApple Swift

2022-10-17 10:28:05

Web 组件代码

2020-11-13 07:08:51

Spring Boot应用Spring

2022-11-01 07:23:55

Dockernetcore程序

2011-06-08 10:01:36

Windows Pho 应用程序

2010-03-15 10:37:46

Pthon脚本

2011-06-24 13:38:32

QT 编译 安装

2011-06-08 10:24:38

Windows Pho 应用程序

2012-12-21 15:29:07

Android

2021-11-02 08:00:00

机器学习API技术

2013-06-14 17:16:44

WP开发Windows PhoWP应用
点赞
收藏

51CTO技术栈公众号