用Python程序执行讨论Python实现基本的框架与结构

开发 后端
在启动Python程序,我们就能看到Python的main函数中相关的内容,而杂File模式,执行Python程序和交互都归在此类。以下就是文章的相关内容。

执行Python程序的相关过程中时,你会发现你其功能非常简单,例如从1加到10再打印出来而杂File模式,执行Python程序和交互都归在此类。以下就是文章的相关内容的详细介绍。忘你会有所收获。

Python源码分析2 - 一个简单的Python程序执行 收藏
本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构。

要执行Python程序如下,功能非常简单:从1加到10再打印出来

 

  1. # test program   
  2. sum = 0   
  3. for i in range(1, 11):   
  4. sumsum = sum + i   
  5. print sum   

 

如果想要在Windows下面用VS 2005调试Python,可以通过下面步骤设置:

把Startup Project设置成Python,这样就可以直接通过F5来启动Python 右键单击Python这个Project,选择Properties。在对话框中的Configuration Properties->Debugging下面,把Command Arguments设置为-d test.py。其中test.py就是我们所要调试程序的名字。-d表示打开调试开关,可以看到额外的调试信息。

 好了,设置完毕之后可以直接按下F10来单步追踪该程序的执行了。

首先,F10,启动Python程序,可以看到Python的main函数中没有什么内容,只是简单的调用Py_Main。Py_Main顾名思义自然是主函数了,分几大部分:

分析命令行和环境变量

调用Py_Initialize初始化

根据命令行的内容执行进入不同的执行模式

 

  1. if (command) {   
  2. sts = PyRun_SimpleStringFlags(command, &cf) != 0;   
  3. free(command);   
  4. } else if (module) {   
  5. sts = RunModule(module);   
  6. free(module);   
  7. }   
  8. else {   
  9. if (filename == NULL && stdin_is_interactive) {   
  10. RunStartupFile(&cf);   
  11. }   
  12. /* XXX */   
  13. sts = PyRun_AnyFileExFlags(   
  14. fp,   
  15. filename == NULL ? "<stdin>" : filename,   
  16. filename != NULL, &cf) != 0;   
  17. }    

 

从上面的代码可以很容易看出,一共有3种执行方式:

Command模式,执行单条Python语句。通过-c指定。语句内容存放在command变量中。调用PyRun_SimpleStringFlags来执行。

Module模式,执行整个Module。通过-m指定。调用RunModule来执行。

File模式,执行Python程序和交互都归在此类。可以看到,如果未指定文件名并且stdin是交互的话,会执行一个PYTHONSTARTUP所指定的源程序。

【编辑推荐】

  1. 对Python源代码组织的相关实际操作步骤解析
  2. Python语言中常用的四种工具的介绍
  3. Python语言功能中的宏编程语言的实际操作方案介绍
  4. Python unicode ascii编码在windows中的实际应用
  5. mod_python在性能上要优于传统CGI的缘由
责任编辑:佚名 来源: 互联网
相关推荐

2022-07-27 10:39:27

Python打包工具

2013-09-17 10:35:17

Python执行原理

2023-09-25 12:23:18

Python

2020-02-06 10:10:24

python程序代码

2015-09-06 10:58:36

PHP框架搭建结构

2010-03-26 14:49:04

Python脚本

2016-09-12 14:05:27

PythonPython解释器Web

2010-02-24 10:39:28

Python虚拟机

2011-07-22 13:41:57

java

2010-03-25 16:51:12

Python程序

2010-09-09 16:26:51

SQL循环For

2022-02-07 08:00:00

Python框架应用程序

2016-10-09 08:57:11

python数据结构与算法树形结构

2015-10-09 16:42:16

GDB 排查Python程序故障

2011-09-15 10:15:30

Spring

2010-03-04 09:49:58

Python Hell

2023-04-06 07:49:23

Python数据类型

2010-03-03 09:30:40

Python实现网页爬

2017-06-08 15:53:38

PythonWeb框架

2010-02-23 17:35:46

Python
点赞
收藏

51CTO技术栈公众号