将函数变量转储到 python/ipython 中的工作区

Yin*_*ong 6 python ipython

当使用 python/ipython repl 进行开发和调试时,有时我想将函数中的所有局部变量转储到工作区以查看发生了什么。假设我有一个函数

def func():
    a = "blablabla"
    b = 1234
    c = some_calculation_of_a_and_b(a,b)
    dump_to_workspace(a,b,c)   # is this possible?,  or even more preferable:
    dump_all_local_variables_to_workspace()   # is this possible?
Run Code Online (Sandbox Code Playgroud)

我希望能够在 python/ipython 中运行它:

>>> func()
>>> print a
"blablabla"
>>> print b
1234
>>> print c
some_calculated_value
Run Code Online (Sandbox Code Playgroud)

我知道两种选择:(1)从函数返回变量[不好,因为我不想弄乱返回值],(2)将数据保存到磁盘上的文件中[不方便,因为它涉及可能具有大量数据的磁盘 I/O]。但大多数时候这些并不那么方便。有没有办法直接实现dump呢?

预先非常感谢!

vik*_*mls 2

为了扩展我上面的评论,这里是 pdb 的快速介绍:

import pdb
def func():
    a = "blablabla"
    b = 1234
    c = some_calculation_of_a_and_b(a,b)
    pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

跑步:

python program.py

a然后解释器将停在 pdb.set_trace() 行,允许您观察、b和的值c

停止时,您可以通过键入以下内容来打印局部变量的值:

p a
p b
Run Code Online (Sandbox Code Playgroud)

等等。可以通过?在 pdb 提示符下键入来获取 pdb 中命令的完整列表。是库文档的链接。