Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您如何看待python中程序逐行的执行?_Python_Python 3.x - Fatal编程技术网

您如何看待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' 您需要的是调试器 有几个选项,例

有没有办法查看python文件执行的详细信息?我知道您可以使用日志记录,但是设置查看最终执行的每一行所需的日志数量显然是不合理的。当然,python程序是逐行执行的,因此对我来说,必须有一种方法来查看至少执行哪一行的细节,可能还有从哪里执行的细节

我想这样的事情是可能的:

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,然后启动调试会话,以便设置检查点并在特定行中查看每个组件的状态。
      pdb
      命令行调试器通常包含在发行版中。分析是另一种选择。看见有多个IDE做同样的事情。这能回答你的问题吗?谢谢你,我试试看:)Trace没有任何作用,但你必须更具体地说明你是如何复制的。请看我的强化答案。是的,它仍然没有任何作用。顺便说一下,我正在终点站运行。IDE是Pycharm。不过谢谢。如果在windows下运行,请尝试从CMD窗口运行它;如果在Linux/Unix/MacOS这样的操作系统下运行,请尝试从控制台窗口运行它。如果您能够正常工作,其他人可能会帮助您在PyCharm下运行它。我不使用它,也不太了解它。所以我实在帮不了你
      $ 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)