当使用 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呢?
预先非常感谢!
为了扩展我上面的评论,这里是 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 中命令的完整列表。这是库文档的链接。