在测试或创建新功能时,我经常喜欢打印正在发生的每一行代码,以便我可以看到每一行的处理方式。
有没有办法可以达到这个目的?我正在寻找更方便的东西,所以我不必在每一行后输入打印。
例如,而不是编写此函数
def test_func():
l = range(10)
print l
l = zip(l,range(30,40))
print l
l = dict(l)
print l
我想写这个没有写印刷,但仍然打印每一行
def test_func():
l = range(10)
l = zip(l,range(30,40))
l = dict(l)
也许我可以使用Python装饰器或其他东西吗?
答案 0 :(得分:6)
最好为此目的使用调试器。但是如果你想打印每一行,你可以使用'trace`运行程序。
python -m trace --trace asd.py
--- modulename: asd, funcname: <module>
asd.py(1): def test_func():
asd.py(6): test_func();
--- modulename: asd, funcname: test_func
asd.py(2): l = range(10)
asd.py(3): l = zip(l,range(30,40))
asd.py(4): l = dict(l)
--- modulename: trace, funcname: _unsettrace
trace.py(80): sys.settrace(None)
答案 1 :(得分:0)
最好的方法是使用pdb,用pdb运行你的代码,如下所示,
Type
pdb中使用的常用选项是,
python -m pdb create_vpc.py
您还可以在程序的任何位置导入pdb,以便它停在那里并为您提供控制台
(pdb) n - next line
(pdb) l - print few lines before and after
(pdb) range(10) or yoru variable "test" ---> this prints current value of any variable from stack
(pdb) !val = range(10) ----> assign any variable while running