【问题标题】:How do I call the Python's list while debugging?调试时如何调用 Python 的列表?
【发布时间】:2012-04-25 15:49:21
【问题描述】:

我有以下 python 代码:

values = set([1, 2, 3, 4, 5])
import pdb
pdb.set_trace()

我运行脚本并在调试 shell 中:

(pdb) list(values)
*** Error in argument: '(values)'
(Pdb)

如何在不调用调试器自己的list 命令的情况下在调试器中调用list(values)

【问题讨论】:

    标签: python debugging


    【解决方案1】:

    print吧:

    (Pdb) print list(values)
    

    不要忘记为 python3 版本添加括号

    (Pdb) print(list(values))
    

    【讨论】:

    • ppp 更短于类型 =)
    • 为什么会这样?
    • @Sebastialonso list 是一个 pdb 命令,它使用 !通过!list 转义它使 pdb 知道您没有运行 pdb 命令
    【解决方案2】:

    使用感叹号!转义调试器命令:

    (Pdb) values = set([1, 2, 3, 4, 5])
    (Pdb) list(values)
    *** Error in argument: '(values)'
    (Pdb) !list(values)
    [1, 2, 3, 4, 5]
    

    【讨论】:

    • 这应该是公认的答案,因为它允许我在调试时实际使用列表
    【解决方案3】:

    蒂埃里,

    由于这个数据结构已经是一个序列,因此将其指定为列表是多余的。所以这会很好。

    (Pdb) print values
    

    (Pbd) print(values)
    

    如果你使用的是 Python3


    可选的带有换行符的漂亮列表

    (Pdb) for x in values:  print x
    

    (Pdb) for x in values:  print(x)
    

    对于 Python3

    【讨论】:

    • 但这不是list,而是set
    • set 不是array...你还在考虑list
    • 我相信这个解释是真的?
    • 您无需将其归类为任何其他内容,除非它是 set。我认为您的意思是,如果您只想查看值,可以将其打印出来。
    • 没关系,但不需要列表(集合),重要的是要注意。
    【解决方案4】:

    输入interact进入“交互模式”。

    (Pdb) heros = ['Gecko', 'Catboy', 'Owlette']
    (Pdb) list(heros)
    *** Error in argument: '(heros)'
    (Pdb) interact
    *interactive*
    >>> list(heros)
    ['Gecko', 'Catboy', 'Owlette']
    

    “交互模式”还允许您处理名称与 PDB 命令冲突的变量。

    【讨论】:

      【解决方案5】:

      另一种有点骇人听闻的方法是输入:

      lst=list
      

      pdb 提示符处。接下来你可以写:

      values = set([1, 2, 3, 4, 5])
      lst(values)
      

      显然这不是推荐的答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        • 1970-01-01
        • 2014-04-08
        • 1970-01-01
        相关资源
        最近更新 更多