您如何看待python中程序逐行的执行?
有没有办法查看python文件执行的详细信息?我知道您可以使用日志记录,但是设置查看最终执行的每一行所需的日志数量显然是不合理的。当然,python程序是逐行执行的,因此对我来说,必须有一种方法来查看至少执行哪一行的细节,可能还有从哪里执行的细节 我想这样的事情是可能的:您如何看待python中程序逐行的执行?,python,python-3.x,Python,Python 3.x,有没有办法查看python文件执行的详细信息?我知道您可以使用日志记录,但是设置查看最终执行的每一行所需的日志数量显然是不合理的。当然,python程序是逐行执行的,因此对我来说,必须有一种方法来查看至少执行哪一行的细节,可能还有从哪里执行的细节 我想这样的事情是可能的: lineno (27) 'test_file' lineno (54) 'test_file' lineno (12) 'test_file' lineno (13) 'test_file' 您需要的是调试器 有几个选项,例
lineno (27) 'test_file'
lineno (54) 'test_file'
lineno (12) 'test_file'
lineno (13) 'test_file'
您需要的是调试器
有几个选项,例如:
- 基于文本的调试器
- 各种IDE中包含的可视化调试器:
- ()调试器可能是更好的答案,但您也可以只使用跟踪模块():
将显示程序正在执行的所有行。
如果您只是想了解python如何逐步完成一个脚本,那么您可以这样做
请检查以下示例和输出。python -m trace -t yourscript.py | grep yourscript.py
:tst.py的内容
现在您得到的输出是:sum = 0 for i in range(4): sum += i print(sum)
$ python -m trace -t tst.py --- modulename: tst, funcname: <module> tst.py(1): sum = 0 tst.py(2): for i in range(4): tst.py(3): sum += i tst.py(2): for i in range(4): tst.py(3): sum += i tst.py(2): for i in range(4): tst.py(3): sum += i tst.py(2): for i in range(4): tst.py(3): sum += i tst.py(2): for i in range(4): tst.py(4): print(sum) 6 --- modulename: trace, funcname: _unsettrace trace.py(77): sys.settrace(None)
您可以使用现代ide,然后启动调试会话,以便设置检查点并在特定行中查看每个组件的状态。
命令行调试器通常包含在发行版中。分析是另一种选择。看见有多个IDE做同样的事情。这能回答你的问题吗?谢谢你,我试试看:)Trace没有任何作用,但你必须更具体地说明你是如何复制的。请看我的强化答案。是的,它仍然没有任何作用。顺便说一下,我正在终点站运行。IDE是Pycharm。不过谢谢。如果在windows下运行,请尝试从CMD窗口运行它;如果在Linux/Unix/MacOS这样的操作系统下运行,请尝试从控制台窗口运行它。如果您能够正常工作,其他人可能会帮助您在PyCharm下运行它。我不使用它,也不太了解它。所以我实在帮不了你pdb
$ python -m trace -t tst.py --- modulename: tst, funcname: <module> tst.py(1): sum = 0 tst.py(2): for i in range(4): tst.py(3): sum += i tst.py(2): for i in range(4): tst.py(3): sum += i tst.py(2): for i in range(4): tst.py(3): sum += i tst.py(2): for i in range(4): tst.py(3): sum += i tst.py(2): for i in range(4): tst.py(4): print(sum) 6 --- modulename: trace, funcname: _unsettrace trace.py(77): sys.settrace(None)
- ()调试器可能是更好的答案,但您也可以只使用跟踪模块():
将显示程序正在执行的所有行。
如果您只是想了解python如何逐步完成一个脚本,那么您可以这样做