Python code模块

2023-11-06

code — 解释器基类

code 模块提供了在 Python 中实现 read-eval-print 循环的功能。它包含两个类和一些快捷功能,可用于构建提供交互式解释器的应用程序。

class code.InteractiveInterpreter(locals=None)
这个类处理解析器和解释器状态(用户命名空间的);它不处理缓冲器、终端提示区或着输入文件名(文件名总是显示地传递)。可选的 locals 参数指定一个字典,字典里面包含将在此类执行的代码;它默认创建新的字典,其键 ‘name’ 设置为 ‘console’ ,键 ‘doc’ 设置为 None 。

class code.InteractiveConsole(locals=None, filename=‘’)
尽可能模拟交互式 Python 解释器的行为。此类建立在 InteractiveInterpreter 的基础上,使用熟悉的 sys.ps1 和 sys.ps2 作为输入提示符,并有输入缓冲。

code.interact(banner=None, readfunc=None, local=None, exitmsg=None)
运行一个 read-eval-print 循环的便捷函数。这会创建一个新的 InteractiveConsole 实例。如果提供了 readfunc ,会设置为 InteractiveConsole.raw_input() 方法。如果提供了 local ,则将其传递给 InteractiveConsole 的构造函数,以用作解释器循环的默认命名空间。然后,如果提供了 banner 和 exitmsg ,实例的 interact() 方法会以此为标题和退出消息。控制台对象在使用后将被丢弃。

在 3.6 版更改: 加入 exitmsg 参数。

code.compile_command(source, filename=‘’, symbol=‘single’)
这个函数主要用来模拟 Python 解释器的主循环(即 read-eval-print 循环)。难点的部分是当用户输入不完整命令时,判断能否通过之后的输入来完成(要么成为完整的命令,要么语法错误)。该函数 几乎 和实际的解释器主循环的判断是相同的。

source 是源字符串;filename 是可选的用作读取源的文件名,默认为 ‘’;symbol 是可选的语法开启符号,应为 ‘single’ (默认), ‘eval’ 或 ‘exec’。

如果命令完整且有效则返回一个代码对象 (等价于 compile(source, filename, symbol));如果命令不完整则返回 None;如果命令完整但包含语法错误则会引发 SyntaxError 或 OverflowError 而如果命令包含无效字面值则将引发 ValueError。

交互解释器对象
InteractiveInterpreter.runsource(source, filename=‘’, symbol=‘single’)
在解释器中编译并运行一段源码。 所用参数与 compile_command() 一样;filename 的默认值为 ‘’,symbol 则为 ‘single’。 可能发生以下情况之一:

输入不正确;compile_command() 引发了一个异常 (SyntaxError 或 OverflowError)。 将通过调用 showsyntaxerror() 方法打印语法回溯信息。 runsource() 返回 False。

输入不完整,需要更多输入;函数 compile_command() 返回 None 。方法 runsource() 返回 True 。

输入完整;compile_command() 返回了一个代码对象。 将通过调用 runcode() 执行代码(该方法也会处理运行时异常,SystemExit 除外)。 runsource() 返回 False。

该返回值用于决定使用 sys.ps1 还是 sys.ps2 来作为下一行的输入提示符。

InteractiveInterpreter.runcode(code)
执行一个代码对象。当发生异常时,调用 showtraceback() 来显示回溯。除 SystemExit (允许传播)以外的所有异常都会被捕获。

有关 KeyboardInterrupt 的说明,该异常可能发生于此代码的其他位置,并且并不总能被捕获。 调用者应当准备好处理它。

InteractiveInterpreter.showsyntaxerror(filename=None)
显示刚发生的语法错误。 这不会显示堆栈回溯因为语法错误并无此种信息。 如果给出了 filename,它会被放入异常来替代 Python 解析器所提供的默认文件名,因为它在从一个字符串读取时总是会使用 ‘’。 输出将由 write() 方法来写入。

InteractiveInterpreter.showtraceback()
显示刚发生的异常。 我们移除了第一个堆栈条目因为它从属于解释器对象的实现。 输出将由 write() 方法来写入。

在 3.5 版更改: 将显示完整的链式回溯,而不只是主回溯。

InteractiveInterpreter.write(data)
将一个字符串写入到标准错误流 (sys.stderr)。 所有派生类都应重载此方法以提供必要的正确输出处理。

交互式控制台对象
InteractiveConsole 类是 InteractiveInterpreter 的子类,因此它提供了解释器对象的所有方法,还有以下的额外方法。

InteractiveConsole.interact(banner=None, exitmsg=None)
近似地模拟交互式 Python 终端。 可选的 banner 参数指定要在第一次交互前打印的条幅;默认情况下会类似于标准 Python 解释器所打印的内容,并附上外加圆括号的终端对象类名(这样就不会与真正的解释器混淆 —— 因为确实太像了!)

可选的 exitmsg 参数指定要在退出时打印的退出消息。 传入空字符串可以屏蔽退出消息。 如果 exitmsg 未给出或为 None,则将打印默认消息。

在 3.4 版更改: 要禁止打印任何条幅消息,请传递一个空字符串。

在 3.6 版更改: 退出时打印退出消息。

InteractiveConsole.push(line)
将一行源文本推入解释器。 行内容不应带有末尾换行符;它可以有内部换行符。 行内容会被添加到一个缓冲区并且会调用解释器的 runsource() 方法,附带缓冲区内容的拼接结果作为源文本。 如果显示命令已执行或不合法,缓冲区将被重置;否则,则命令尚未结束,缓冲区将在添加行后保持原样。 如果要求更多输入则返回值为 True,如果行已按某种方式被处理则返回值为 False (这与 runsource() 相同)。

InteractiveConsole.resetbuffer()
从输入缓冲区中删除所有未处理的内容。

InteractiveConsole.raw_input(prompt=‘’)
输出提示并读取一行。返回的行不包含末尾的换行符。当用户输入 EOF 键序列时,会引发 EOFError 异常。默认实现是从 sys.stdin 读取;子类可以用其他实现代替。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python code模块 的相关文章

  • 窗口多维 Tensorflow 数据集

    我有形状的二维数据m by n我想要的窗口大小w沿着第一个轴进入数据集m w许多二维数组 每个数组的大小w by n 例如如果数据是 0 1 2 3 4 5 6 7 8 9 10 11 然后我想将其窗口化 0 1 2 3 4 5 6 7 8
  • 为什么我的 jupyter 笔记本中不需要“%matplotlib inline”?

    我只是想理解为什么我的 jupyter 安装不需要我运行 matplotlib inline 根据我读过的所有内容 我应该运行它才能将我的绘图内联到我的 jupyter 笔记本中 但事实是 无论我是否运行 matplotlib inline
  • Matplotlib 颤抖比例

    我正在尝试使用 matplotlib 和 quiver 函数绘制一些箭头 但我想使用数组单独选择每个箭头的长度 http matplotlib sourceforge net api pyplot api html matplotlib p
  • 在类中设置默认值

    我正在用 Python 创建一个类 但我不确定如何正确设置默认值 我的目标是为所有类实例设置默认值 也可以通过类方法对其进行修改 但是 我希望在调用方法后恢复初始默认值 我已经能够使用下面所示的代码使其工作 它不是很 漂亮 所以我怀疑这是解
  • Python groupby 无法按预期工作[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 Excel 电子表格 其中包含以下格式的一些列 column1 column1 AccountName column1 SomeOtherFeature column2 blabla colu
  • 为什么我的查询在参数化后会中断?

    我有 2 张桌子 Sales and Product Sales可以将产品存储为Idn or Name 传统设计 和Type列指定实际type与之相关 Product等是连接的子集表into这个表来获取真实的数据 在这个例子中 Produc
  • 如何使用Python中的or-tools解决累积旅行商问题?

    累积旅行商问题 CTSP 的目标是最小化到达客户的时间总和 而不是总旅行时间 这与最小化总旅行时间不同 例如 如果一个人拥有无限的车辆 车辆与位置数量相同 并且目标是最大限度地减少到达位置的总时间 则可以为每个位置发送一辆车 因为这是满足所
  • Python 中的参数命名约定

    对于形式参数密切相关的函数 例如 def add two numbers n1 n2 return n1 n2 def multiply two numbers n1 n2 return n1 n2 如上所示 为两个函数中的参数指定相同的名
  • 具有动态特性的 Python 嵌套作用域

    需要帮助理解以下句子PEP 227 http www python org dev peps pep 0227 和Python 语言参考 http docs python org reference executionmodel html
  • python数据结构(类似设置)在添加重复项时抛出异常

    我正在寻找一种在添加重复元素时会引发异常的数据结构 我发现的最接近的是collections Counter gt gt gt from collections import Counter as counter gt gt gt c co
  • Scikit-learn:如何获得 True Positive、True Negative、False Positive 和 False Negative

    我的问题 我有一个数据集 它是一个很大的 JSON 文件 我读取它并将其存储在trainList多变的 接下来 我对其进行预处理 以便能够使用它 完成后 我开始分类 我用kfold交叉验证方法以获得平均值 准确性并训练分类器 我做出预测并获
  • Django + 后台任务如何初始化

    我有一个基本的 django 项目 用作 Condor 计算集群的前端接口来生成模拟 用户可以从 django 应用程序开始模拟 在 Condor 中 与仿真相关的元数据和仿真状态保存在数据库中 我需要添加一个新功能 某些 模拟完成时发出通
  • 在 Django 视图中访问其他项目中的模型导致“表不存在”错误

    基地项目结构 baseproject baseapp models py class BaseModel models Model 其他项目结构 project app views py urls py 项目 app views py im
  • django 创建多类型用户的最佳方法

    我想在 django 中创建多个用户 我想知道哪种方法是最好的 class Teachers models Model user models ForeignKey User is teacher models BooleanField d
  • 如何在lxml,Python中将<转换为<?

    有一个xml文件
  • 在Python中将字符串转换为变量? [复制]

    这个问题在这里已经有答案了 我对 python 和编程都很陌生 并且已经尝试弄清楚如何做到这一点有一段时间了 这是我需要帮助的内容 y 0 x 2 p01 hello p02 bye print p str y str x 输出当然是 p0
  • 需要帮助编写扭曲的代理

    我想编写一个简单的代理 可以对请求页面正文中的文本进行打乱 我已经阅读了 stackoverflow 上的部分扭曲文档和其他一些类似的问题 但我有点菜鸟 所以我仍然不明白 我现在就是这样 不知道如何访问和修改页面 from twisted
  • Scapy TCP 校验和重新计算奇怪的行为

    我正在尝试进行 TCP ACK 欺骗 我从 pcap 文件中嗅探一个 ACK 数据包 并在循环中发送它 增加其 ACK 编号以及另一个选项字段 嗅探部分 预欺骗 from scapy all import from struct impor
  • Python Flask 不更新图像[重复]

    这个问题在这里已经有答案了 这里有一些关于图像的 Flask 问题 但没有一个能解决我的问题 我有一个应用程序可以创建图像 保存它 然后显示它 一次 它应该多次执行此操作 每次更改图像时 它应该加载新图像 它不是 它只显示与其显示的文件名关
  • Python - 使用 BeautifulSoup 从 URL 列表中抓取文本的最简单方法

    使用 BeautifulSoup 从几个网页 使用 URL 列表 中抓取文本的最简单方法是什么 有可能吗 最好的 乔治娜 import urllib2 import BeautifulSoup import re Newlines re c

随机推荐

  • Python 2.7 requests库POST请求体中有中文的处理方法

    Python 2 7 requests库发送POST请求 请求体是JSON格式 JSON字符串中包含中文 可以如此处理 Python 2 7 默认的源码文件编码是 ASCIl 如果你想在源代码中使用非 ASCII 字符 比如中文 你需要在文
  • 怎样更改Jupyter NoteBook默认的工作空间

    1 首先打开命令窗口 输入 jupyter notebook generate config 2 根据上面得到的路径 找到jupyter notebook config py这个配置文件 3 用记事本打开 查找directory 4 把前面
  • 内容安全综合实践-数字水印

    DCT实现数字水印功能模块 1 整体效果 功能 添加和提取字符水印 添加和提取图片水印 整体效果 2 数字水印的基本特点 1 不可见性 在宿主数字媒体中嵌入一定数量的附加信息后 不能引起明显的将质现象 隐藏的数据不易觉察 即无法人为的看见或
  • Java中的关键字

    Abstract 表明类或者成员方法具有抽象属性 Assert 用来进行程序调试 Boolean 基本数据类型之一 布尔类型 Break 提前跳出一个块 Byte 基本数据类型之一 字节类型 Case 用在switch语句之中 表示其中的一
  • 蓝桥杯算法模板

    模拟散列表 单链表 import java io import java util Scanner public class dlb private static int N 100010 private static int head p
  • STL之mismatch

    判断两个区间的第一个不匹配点 返回一个由两个迭代器组成的pair 其中第一个迭代器指向第一个区间的不匹配点 第二个迭代器指向第二个区间的不匹配点 如果都匹配 返回的是指向两个区间的last迭代器 quality 1 采用默认operator
  • VUE element-ui 之button按钮之间切换时单个按钮持续聚焦状态实现(点击按钮聚焦,仅当点击其他按钮时,之前的按钮会失焦,当前按钮聚焦)

    多个按钮切换时 页面切换 假设不做处理会出现点击按钮时聚焦 离开按钮点击任何地方 鼠标单击 按钮会失焦 我这里要求实现点击按钮聚焦 仅当点击其他按钮时 之前的按钮会失焦 当前按钮聚焦 也就是提醒用户当前处于哪个维度的页面 这里自己研究的方法
  • apt install报错E: Unmet dependencies. Try ‘apt --fix-broken install‘ with no packages的解决方案

    摘要 最近在一台Ubuntu 22 04系统中部署语音识别项目 不知道怎么 我使用apt install安装软件时报错 无论安装什么软件都是报同一个错误E Unmet dependencies Try apt fix broken inst
  • 柯美背包服务器系统,全能升级!全面合作!经纬科技与柯美中国正式签约

    经纬长期关注客户需求 现针对图文行业客户核心需求 加推卷材送料功能 该功能已在海外市场成熟应用1年多时间 可助力客户承接更多业务 但又不会因订单数量起伏导致设备闲置 真正实现一机多能 提升效率 创造价值 横向打通 睿思新科技 锐启新合作 真
  • .env.development(开发环境)、.env.prodction(正式环境)、自定义环境的使用

    1 配置文件 env development 开发环境下的配置文件 env production 生产环境下的配置文件 2 命名 属性必须以VUE APP 开头 案列 env development NODE ENV development
  • 《趣谈Linux》总结十:虚拟化

    37 虚拟化 Linux越来越强大了 例如 内存动不动就是百G内存 网络设备一个端口的带宽就能有几十G甚至上百G 存储在数据中心至少是PB级别的 一个P是1024个T 一个T是1024个G 这自然有了一些不灵活的地方 资源大小不灵活 有时候
  • python初阶---基础语法篇(二)

    文章目录 一 数据类型 二 列表 三 元组 四 集合 五 字典 六 序列 七 遍历函数map 八 筛选函数filter 九 累计函数reduce 一 数据类型 1 逻辑型 逻辑型又称布尔型 取值只有两种 0和1 或者真和假 False和Tr
  • 7.2

    include
  • Android自定义RecyclerView实现多级树

    Android自定义RecyclerView实现多级树 在Android开发中 RecyclerView是一个强大灵活的控件 常用于展示大量数据列表 而有时候我们需要实现多级树结构的列表 即每个节点下面可以包含子节点 这时候就需要对Recy
  • shell脚本启动jar包

    bin bash NAME spring admin echo NAME PID ps ef grep NAME grep java grep v grep awk print 2 echo 当前进程号为 PID echo for pid
  • iphone屏蔽系统更新_iphone如何实现永久屏蔽IOS系统更新?

    一直以来苹果的新系统更新覆盖率是全行业最快也是最高的 截止到ios13发布为止 ios12的全网覆盖率已经达到了惊人的90 iphone手机如何永久屏蔽IOS系统更新 对于ios13加入的诸多功能升级以及隐藏的一些不稳定因素 更多用户会选择
  • 线性代数 - 矩阵形式下的最小二乘法

    20201001 0 引言 最近在看 异常点检测 的时候 其中在PCA部分 准确来说是前面一小节 在进行推导的时候 使用了最小二乘法 其实这个东西本质上并不难 但是让我比较尴尬的是 很多线性代数的东西有些遗忘了 好在最近直截了当的复习让大部
  • Python3中with用法

    Python中的with语句用于用上下文管理器 context manager 定义的方法包装块的执行 它允许将常见的try except finally使用模式封装起来以方便重用 在Python中 在处理非托管资源 unmanaged r
  • Idea代码上传至Git完整教程(阿里云)

    项目背景 本期项目是一个数据化应用系统 使用的是idea开发后台 前端使用微信小程序的项目 项目中 为了代码管理方便 使用了阿里云作为代码托管 直接使用idea上传下载代码 本期文章介绍idea上传代码的过程 与大家分享 如有不行详细或错误
  • Python code模块

    code 解释器基类 code 模块提供了在 Python 中实现 read eval print 循环的功能 它包含两个类和一些快捷功能 可用于构建提供交互式解释器的应用程序 class code InteractiveInterpret