如何查看Python代码每一行运行效果及函数逐行执行结果?
Python逐行查看代码执行逻辑和结果的方法
以下是不需要额外跳转网站、本地即可直接使用的实现方案:
- 内置pdb调试工具
不用安装任何第三方依赖,直接通过两种方式启用:- 在代码需要暂停的位置插入代码
import pdb; pdb.set_trace(),运行脚本后会自动在插入位置暂停,进入交互调试模式 - 运行脚本时添加参数,执行
python -m pdb 你的脚本文件名.py,启动后直接停在代码第一行
常用调试命令:
- 输入
n回车:执行下一行代码 - 输入
p 变量名回车:查看当前该变量的取值,比如你可以在示例代码的循环里执行p i看当前遍历的字符、p stack看栈的当前内容 - 输入
l回车:查看当前位置前后的代码上下文 - 输入
c回车:跳过后续逐行执行,直接跑完剩余代码 - 输入
q回车:直接退出调试
- 在代码需要暂停的位置插入代码
- IDE断点调试
如果用PyCharm、VS Code(已安装Python扩展)这类编辑器,直接点击代码行号旁的空白位置添加断点(会显示红色圆点标记),之后选择「调试运行」模式启动脚本,代码运行到断点位置会自动暂停,编辑器侧边会实时展示当前所有作用域内的变量值,点击工具栏的「单步跳过(Step Over)」按钮即可逐行执行代码,变量值会同步更新,是最直观的调试方式。 - 插入打印语句
最简单直接的方式,在你需要查看状态的位置添加print语句打印关键变量即可,比如你提供的示例代码可以修改为:
def ValidParentheses(s): stack = [] for i in s: # 打印每一步的遍历字符和栈状态 print(f"当前遍历字符:{i},当前栈内容:{stack}") if i == '(': stack.append(i) elif i == ')': if len(stack) == 0: print("栈为空,匹配失败,返回False") return False else: stack.pop() print(f"遍历结束,最终栈内容:{stack}") return len(stack) == 0 s = '())' print(ValidParentheses(s))
运行后就能清晰看到每一步的执行变化。
内容的提问来源于stack exchange,提问作者Kevin Tracey
相关产品推荐
相关产品推荐

