如何在Python中打印每一行处理代码?

时间:2015-07-10 11:17:39

标签: python

在测试或创建新功能时,我经常喜欢打印正在发生的每一行代码,以便我可以看到每一行的处理方式。

有没有办法可以达到这个目的?我正在寻找更方便的东西,所以我不必在每一行后输入打印。

例如,而不是编写此函数

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装饰器或其他东西吗?

2 个答案:

答案 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