创新互联Python教程:codeop—-编译Python代码

codeop —- 编译python代码

源代码: Lib/codeop.py

革吉网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联公司2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司


codeop 模块提供了可以模拟Python读取-执行-打印循环的实用程序,就像在 code 模块中一样。因此,您可能不希望直接使用该模块;如果你想在程序中包含这样一个循环,你可能需要使用 code 模块。

这个任务有两个部分:

  1. 能够判断一行输入是否完成了一个Python语句:简而言之,告诉我们是否要打印 ‘>>>‘ 或 ‘...‘。

  2. 记住用户已输入了哪些 future 语句,这样后续的输入可以在这些语句被启用的状态下被编译。

codeop 模块提供了分别以及同时执行这两个部分的方式。

只执行前一部分:

codeop.compile_command(source, filename=’, symbol=’single’)

尝试编译 source,这应当是一个 Python 代码字符串,并且在 source 是有效的 Python 代码时返回一个代码对象。 在此情况下,代码对象的 filename 属性将为 filename,其默认值为 ''。 如果 source 不是 有效的 Python 代码而是有效的 Python 代码的一个前缀时将返回 None

如果 source 存在问题,将引发异常。 如果存在无效的 Python 语法将引发 SyntaxError,而如果存在无效的字面值则将引发 OverflowError 或 ValueError。

symbol 参数确定 source 是作为一条语句 (对应默认值 'single'),作为一系列语句 ('exec') 还是作为一个 expression ('eval') 进行编译。 任何其他值都将导致引发 ValueError。

备注

解析器有可能(但很不常见)会在到达源码结尾之前停止解析并成功输出结果;在这种情况下,末尾的符号可能会被忽略而不是引发错误。 例如,一个反斜杠加两个换行符之后可以跟随任何无意义的符号。 一旦解析器 API 得到改进将修正这个问题。

class codeop.Compile

这个类的实例具有 __call__() 方法,其签名与内置函数 compile() 相似,区别在于如果该实例编译了包含 __future__ 语句的程序文本,则实例会‘记住’并使用已生效的语句编译所有后续程序文本。

class codeop.CommandCompiler

这个类的实例具有 __call__() 方法,其签名与 compile_command() 相似;区别在于如果该实例编译了包含 __future__ 语句的程序文本,则实例会‘记住’并使用已生效的语句编译编译所有后续程序文本。

网页名称:创新互联Python教程:codeop—-编译Python代码
分享URL:http://www.csdahua.cn/qtweb/news19/517669.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网