Python解释器输入来源

2023-11-21 76

Python 解释器可以从多种来源获取输入,包括标准输入或程序参数传入的脚本、以交互方式键入的语句、导入的模块源文件等。本篇教程将详细介绍,并给出这些情况下所用的语法。

一、完整的Python程序

虽然语言规范描述不需要规定如何启动 Python 解释器,但对于完整的 Python 程序进行说明仍然很有用。一个完整的 Python 程序会在最小初始化环境中执行:所有内置和标准模块都是可用的,但它们都处于未初始化状态,只有 sys(各种系统服务)、builtins(内置函数、异常以及 None)和 main 除外。最后一个模块用于为完整程序的执行提供局部和全局命名空间。

解释器也可以通过交互模式被发起调用;在此情况下,它并不读取和执行一个完整程序,而是每次读取和执行一条语句(可能为复合语句)。 此时的初始环境与一个完整程序的相同;每条语句会在 __main__ 的命名空间中被执行。

一个完整程序可通过三种形式被传递给解释器:使用 -c 字符串 命令行选项,使用一个文件作为第一个命令行参数,或者使用标准输入。 如果文件或标准输入是一个 tty 设置,解释器会进入交互模式;否则的话,它会将文件当作一个完整程序来执行。

二、文件输入

所有从非交互式文件读取的输入都具有相同的形式:

file_input ::= (NEWLINE | statement)*

此语法用于下列几种情况:

  • 解析一个完整 Python 程序时(从文件或字符串);
  • 解析一个模块时;
  • 解析一个传递给 exec() 函数的字符串时。

三、交互式输入

交互模式下的输入使用以下语法进行解析:

interactive_input ::= [stmt_list] NEWLINE | compound_stmt NEWLINE

请注意在交互模式下一条(最高层级)复合语句必须带有一个空行;这对于帮助解析器确定输入的结束是必须的。

四、表达式输入

eval() 被用于表达式输入。 它会忽略开头的空白。 传递给 eval() 的字符串参数必须具有以下形式:

eval_input ::= expression_list NEWLINE*
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。