python - 使用列表生成器时 Python 3 中的 pdb 模块中可能存在错误

标签 python python-3.x generator pdb ipdb

在 Python 3 中运行此代码后:

import pdb

def foo():
    nums = [1, 2, 3]
    a = 5
    pdb.set_trace()

foo()

以下表达式有效:

(Pdb) print(nums)
[1, 2, 3]

(Pdb) print(a)
5

(Pdb) [x for x in nums]
[1, 2, 3]

但以下表达式失败:

(Pdb) [x*a for x in nums]
*** NameError: global name 'a' is not defined

以上在 Python 2.7 中运行良好。

这是一个错误还是我遗漏了什么?

更新:查看新接受的答案。这确实是一个错误(或有问题的设计),现在已通过在 pdb 中引入新的命令和模式来解决。

最佳答案

如果您在 [i]pdb session 中键入 interact,您将获得一个交互式 session ,并且列表推导在此模式下会按预期工作

来源:http://bugs.python.org/msg215963

关于python - 使用列表生成器时 Python 3 中的 pdb 模块中可能存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17290314/

相关文章:

python - 在 Python3 中解析 JSON 响应

python - 如何在 python 3 中将二进制值转换为文本或 ascii?

c - 为什么我的程序会给我多余的输出? C程序

python - 为什么覆盖我的方法会导致我的属性停止正常工作?

python - 使用python计算每笔交易之间的时间差

在一定百分比的时间内返回值的 Python 函数

python-3.x - 在 Python 中将值插入字符串

list - 识别列表中连续重复项的最 Pythonic 方法是什么?

Python:写入文件时的内存使用情况(生成器与列表)

python - Dask - 如何连接到正在运行的集群调度程序并访问 'total_occupancy' ?