Python是否有值注册表?从MatLab转Python的调试功能问询
Python里替代Matlab参数记录表的调试方法
Matlab那种自动生成所有参数最后取值表格的功能,Python默认没有,但有不少比反复写print()更高效的调试方式:
交互式环境(IPython/Jupyter)
用IPython或者Jupyter Notebook运行代码后,直接输入变量名就能查看取值;输入%who会列出当前所有变量,%whos则会以表格形式显示变量的名称、类型、大小和具体取值,和Matlab的参数表功能最接近。比如执行%whos后会输出类似:Variable Type Data/Info ---------------------------- a int 5 b list n=3 c str 'hello'内置调试器pdb/增强版ipdb
在代码里插入import pdb; pdb.set_trace()(或者ipdb的import ipdb; ipdb.set_trace()),运行到这一行会进入调试模式:- 输入
locals()可以查看当前局部作用域的所有变量及取值 - 输入
globals()查看全局作用域变量 - 用
p 变量名打印单个变量值,pp则会格式化输出复杂结构(比如字典、列表) - 还能通过
n(下一步)、s(进入函数)等命令逐步调试,实时监控变量变化
- 输入
IDE自带的调试面板
像PyCharm、VS Code这类IDE,直接给代码加断点后启动调试,侧边栏的调试面板会实时展示当前作用域的所有变量及其取值,包括运行结束前的最后状态,还能手动添加“监视变量”,重点跟踪特定参数,完全不用写print语句。自定义变量快照表格
如果就想要类似Matlab的表格输出,可以自己写个小函数,用pandas把变量转成表格:import pandas as pd def show_var_table(): # 收集当前作用域非下划线开头的变量 var_dict = {k: v for k, v in locals().items() if not k.startswith('_')} # 转成DataFrame并打印 print(pd.DataFrame(var_dict.items(), columns=['变量名', '取值']))把这个函数放在代码末尾执行,就能得到格式化的变量表格。
内容的提问来源于stack exchange,提问作者mioumitsou
相关产品推荐
相关产品推荐

