千家信息网

Python运行的过程中不直接用到的相关函数有哪些

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关Python运行的过程中不直接用到的相关函数有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我们都知道在P
千家信息网最后更新 2026年11月01日Python运行的过程中不直接用到的相关函数有哪些

本篇文章给大家分享的是有关Python运行的过程中不直接用到的相关函数有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

我们都知道在Python运行的过程中是需要不直接的利用到Grammar文件的相关内容进而进行相关的语法分析,过程中会依赖graminit.c/graminit.h中的数据结构来进行语法分析

前面提到了在Python的源代码目录下面有一个Grammar目录,里面只有一个文件Grammar,以BNF的语法定义了Python的全部语法。拿if语句举例来说:

  1. if_stmt: 'if' test ':' suite
    ('elif' test ':' suite)* ['else' ':' suite]

上面的语句可以这样理解,if语句是if关键字+逻辑表达式+ ‘:’+语句块(suite)后面跟上0至多个elif语句并以else语句结束。在最左边的if_stmt表示这一句话定义了if_stmt(非终结符),’:’右边则是if_stmt的具体对应的内容。

1. ‘’引号中的内容是实际的字符串,’if’就代表if这两个字符

2. 一般的标示符代表着非终结符,也就是某个等式的左边,if_stmt, test, suite都是非终结符,可以被扩展为等式右边的序列。

3. ()括号是原子操作符,被括号括起来的被作为单个表达式看待

4. *代表0或多个,比如在if_stmt中的(‘elif’ test ‘:’ suite)*代表一个if语句中可以有0或者多个elif子句

5. +代表1或者多个

但是,这个文件并不只是用来作为参考资料的。实际上,Python运行的时候也需要间接利用到Grammar文件的内容来进行语法分析。

Python PGEN

在Makefile.pre.in和Parser/grammar.mak中均有类似如下的代码:

  1. ###################################################
    #######################

  2. # Grammar

  3. GRAMMAR_H= $(srcdir)/Include/graminit.h

  4. GRAMMAR_C= $(srcdir)/Python/graminit.c

  5. GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar

  6. ###############################################
    ###########################

  7. # Parser

  8. PGEN= Parser/pgen$(EXE)

  9. POBJS= \

  10. Parser/acceler.o \

  11. Parser/grammar1.o \

  12. Parser/listnode.o \

  13. Parser/node.o \

  14. Parser/parser.o \

  15. Parser/parsetok.o \

  16. Parser/bitset.o \

  17. Parser/metagrammar.o \

  18. Parser/firstsets.o \

  19. Parser/grammar.o \

  20. Parser/pgen.o

  21. PARSER_OBJS= $(POBJS) Parser/myreadline.o Parser/tokenizer.o

  22. PGOBJS= \

  23. Objects/obmalloc.o \

  24. Python/mysnprintf.o \

  25. Parser/tokenizer_pgen.o \

  26. Parser/printgrammar.o \

  27. Parser/pgenmain.o

  28. PGENOBJS= $(PGENMAIN) $(POBJS) $(PGOBJS)

  29. ###################################################
    #########################

  30. # Special rules for object files

  31. $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)

  32. -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)

  33. $(PGEN): $(PGENOBJS)

  34. $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)

这段代码负责生成pgen,然后调用pgen以Grammar作为输入,生成graminit.h/graminit.c。PGEN是Python自带的语法分析数据生成的工具,负责分析Grammar然后生成对应的graminit.c/graminit.h。然后,Python运行过程中会依赖graminit.c/graminit.h中的数据结构来进行语法分析。

以上就是Python运行的过程中不直接用到的相关函数有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

语句 语法 分析 过程 运行 代表 内容 多个 文件 生成 数据 终结符 函数 代码 右边 字符 实际 括号 数据结构 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司起名 互联网最新的科技 互联网科技集团 云电互联网科技 互联网科技博客 美国互联网前沿科技 互联网科技创新企业排名 温州喔噻互联网科技有限公司 创业天下互联网科技有限公司 剑昆互联网络科技有限公司临桂 昭通云南众福互联网科技有限公司 呼和浩特新华互联网科技学院 想开互联网科技公司怎么样 徐州市互联网科技有限公司 伊宁互联网科技做什么的 互联网金融科技公司的优势 云南省自由互联网科技有限公司 米泉互联网科技专业怎么样 深圳互联网科技园地址 瑞安市蟠桃会互联网科技有限公司 中国互联网科技股 科技制造互联网公司 平安科技 互联网 湖南洣水互联网科技有限公司扣款 互联网金融科技公司干啥的 河南猎农互联网科技有限公司 996高科技互联网公司 深圳无忧互联网科技 平安好医生打造互联网科技医疗 网互联网络科技
0