将生成器对象转换为列表以进行调试[重复]

2023-12-22

当我使用 IPython 在 Python 中进行调试时,有时会遇到断点,并且我想检查当前是生成器的变量。我能想到的最简单的方法是将其转换为列表,但我不清楚在一行中执行此操作的简单方法是什么ipdb,因为我对 Python 很陌生。


只需致电list在发电机上。

lst = list(gen)
lst

请注意,这会影响生成器,生成器将不会返回任何其他项目。

您也不能直接调用list在 IPython 中,因为它与列出代码行的命令冲突。

对此文件进行测试:

def gen():
    yield 1
    yield 2
    yield 3
    yield 4
    yield 5
import ipdb
ipdb.set_trace()

g1 = gen()

text = "aha" + "bebe"

mylst = range(10, 20)

运行时:

$ python code.py 
> /home/javl/sandbox/so/debug/code.py(10)<module>()
      9 
---> 10 g1 = gen()
     11 

ipdb> n
> /home/javl/sandbox/so/debug/code.py(12)<module>()
     11 
---> 12 text = "aha" + "bebe"
     13 

ipdb> lst = list(g1)
ipdb> lst
[1, 2, 3, 4, 5]
ipdb> q
Exiting Debugger.

转义函数/变量/调试器名称冲突的通用方法

有调试器命令p and pp那将会print and prettyprint跟随它们的任何表达式。

所以你可以按如下方式使用它:

$ python code.py 
> /home/javl/sandbox/so/debug/code.py(10)<module>()
      9 
---> 10 g1 = gen()
     11 

ipdb> n
> /home/javl/sandbox/so/debug/code.py(12)<module>()
     11 
---> 12 text = "aha" + "bebe"
     13 

ipdb> p list(g1)
[1, 2, 3, 4, 5]
ipdb> c

还有一个exec命令,通过在表达式前面加上前缀来调用!,这会强制调试器将您的表达式视为 Python 表达式。

ipdb> !list(g1)
[]

欲了解更多详情,请参阅help p, help pp and help exec当在调试器中时。

ipdb> help exec
(!) statement
Execute the (one-line) statement in the context of
the current stack frame.
The exclamation point can be omitted unless the first word
of the statement resembles a debugger command.
To assign to a global variable you must always prefix the
command with a 'global' command, e.g.:
(Pdb) global list_options; list_options = ['-l']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将生成器对象转换为列表以进行调试[重复] 的相关文章

随机推荐

  • getOutputStream() 上的设备上“没有到主机的路由” - 无线连接

    private String urlPost http 192 168 1 66 8080 DataCollectionServlet Override protected void doWakefulWork Intent intent
  • 使用泛型类型构造函数时,Null (?) 运算符返回不正确的值。网络

    使用通用类型和空运算符时 我遇到一些奇怪的行为 为什么 obj2 CurrentDate 返回的日期值在使用时看起来不正确 简写 如果我在属性中长期使用 null 运算符 if 那么它会返回正确的预期值 我以为 相当于 if 表达式 ret
  • 配置 Kafka 以接受来自 Docker 内部和外部的客户端

    我正在 Docker 网络中运行 Apache Kafka Kafka Broker 的容器称为 docker kafka 我想要的是允许来自另一个 docker 容器以及 docker 主机的 Kafka 客户端的连接 docker ka
  • 复制关系表数据

    我希望我在这个问题上不会太啰嗦 我只是想确保我所问的内容完全清楚 我认为这相当令人困惑 我有一个数据库 其中有一堆表 并且设置了所有外键约束 关系有时会深达几张表 并且也存在子级与多个父表相关的情况 我想插入 顶级 表行之一的副本以及与其相
  • 体系结构 x86_64 的未定义符号:OS X、Boost Log、CMake

    链接的另一个问题 操作系统 X 10 9 5 x64 跨平台项目正在使用 CMake 工具链构建 使用升压 将所有可执行文件与 Boost Log 链接时出错 确实找到了 BOOST PATH 单元测试与 Boost Test 成功链接 第
  • Java - 通过浏览器/URL 连接到 ServerSocket

    我正在编写一个软件 并且受到无法使用套接字连接到使用 ServerSocket 的 java 应用程序的限制 我想我应该尝试使用 URL 连接 因为可以定义要连接到的端口 e g 127 0 0 1 62666 我的服务器应用程序正在侦听连
  • 无法建立到服务器的链接

    一个非常简单的插入函数 它给出了一些令人讨厌的错误 Like Warning mysql query Access denied for user one com using password NO in customers be be h
  • 编写一个程序来抓取论坛

    我需要编写一个程序来抓取论坛 我应该使用 Scrapy 框架用 Python 编写程序还是应该使用 Php cURL 还有与 Scrapy 相当的 Php 吗 Thanks 我会选择 Python 因为它具有卓越的 libxml2 绑定 特
  • 如何从unix连接到oracle数据库

    我正在尝试从我的 UNIX 机器连接到 Oracle 数据库 总的来说 我对剧本写作很陌生 我知道如何浏览unix并编写了基本脚本 读取 显示 并使用bash命令执行它们 我还知道如何查看 unix 中的变量 用户和系统 你能告诉我需要做什
  • Django 多项选择字段/复选框选择多个

    我有一个 Django 应用程序 想要在用户的个人资料中显示多项选择复选框 然后他们将能够选择多个项目 这是我的 models py 的简化版本 from profiles choices import SAMPLE CHOICES cla
  • 根据局部最小值/最大值计算累积增长/下降

    我正在学习 R 及其通过 quantmod lib 在交易任务中的应用 并定期浏览社区 从这里获得很多新知识和技巧 我对 R 的总体印象 特别是 quantmod lib 它非常棒 此时我需要经验丰富的 R 用户的帮助 我正在使用通过 ge
  • 如何将结构化数据保存到文件?

    我的程序包含大量具有恒定输出的预计算 我想避免在下次运行程序时运行此预计算 因此 我想在程序第一次运行时将其输出保存到文件中 并在下次运行程序时加载它 输出包含我自己定义的非常见数据类型 对象和结构 我该如何去做呢 反 序列化 Rust 对
  • 为什么我的测试没有在 Odoo 10 上运行?

    我创建了一个简单的待办事项应用程序 其结构如下 todo app init py manifest py tests init py tests todo py todo model py 在测试文件夹下我有 测试 init py codi
  • 如何向 Chart.js 添加数据集切换?

    我正在使用 Chart js 创建折线图 我想要四个不同的数据集 默认情况下它们都是可见的 但可以通过单击按钮来打开和关闭 如何才能实现这一目标 我似乎无法在文档中找到答案 addData removeData and update all
  • 如何检查命令是否可以执行?

    我有一个脚本将向用户显示一些压缩选项 gzip zip 和 bzip 由于这意味着可以在 Linux 和 Windows 上运行 并且 Zlib 库不可用 因此我必须使用 Unix 命令来压缩任何文件 当然 如果脚本在 Windows 上运
  • 如何使用 T-SQL 进行数据透视表?

    如何从此格式转换表格 Id Data Section 1 1AAA AAA 1 1BBB BBB 1 1CCC CCC 2 2AAA AAA 2
  • Python Websockets 无法通过互联网连接

    我只是想通过互联网获得一个非常基本的 websocket 连接 该代码看起来不错 因为它在连接到本地主机时有效 但由于某种原因 当我尝试通过互联网使用它时失败了 我正在使用网络套接字 https pypi python org pypi w
  • 为 pyspark 设置 SparkContext

    我是新手spark and pyspark 如果有人解释一下到底是什么 我将不胜感激SparkContext参数做什么 我该如何设置spark context对于Python应用程序 See here http spark apache o
  • 为什么 Cloneable 没有被弃用?

    人们普遍认为CloneableJava 中的接口已损坏 造成这种情况的原因有很多 我就不一一列举了 others http howtodoinjava com 2012 11 10 cloneable interface is broken
  • 将生成器对象转换为列表以进行调试[重复]

    这个问题在这里已经有答案了 当我使用 IPython 在 Python 中进行调试时 有时会遇到断点 并且我想检查当前是生成器的变量 我能想到的最简单的方法是将其转换为列表 但我不清楚在一行中执行此操作的简单方法是什么ipdb 因为我对 P