Python函数内部变量无法在变量资源管理器显示如何解决

本次遇到问题的具体变量为dfselect
函数内部变量属于局部作用域,函数执行完成后临时占用的内存会被自动回收,IDE默认只抓取全局作用域的变量展示,所以你在变量资源管理器里看不到这类变量,几个可直接落地的解决方法:
- 断点调试查看(最推荐,完全不用改原有代码逻辑)
在你要查看的内部变量所在的代码行打个断点,启动调试模式运行代码,程序运行到断点位置会自动暂停,此时当前函数栈内的所有局部变量都会自动加载到变量资源管理器中,你可以直接查看大型数组的数值、维度、类型等所有信息。如果用的是Spyder,还能在变量资源管理器顶部的作用域下拉框里切换不同栈帧的作用域,查看嵌套调用里各层函数的内部变量。 - 声明为全局变量留存
如果需要在函数完整执行结束后还能在变量资源管理器看到对应变量,在函数内部用global关键字声明需要留存的变量即可,示例:
函数执行完成后,被声明的变量就会和全局变量一起展示在变量资源管理器里。注意不要把所有内部变量都声明为全局,尤其是大型数组,会持续占用内存,还容易引发变量命名冲突。def 你的自定义函数名(): global dfselect # 声明该变量为全局作用域变量 # 你原有的业务逻辑,比如给dfselect赋值大型数组 dfselect = ... # 主程序调用函数 你的自定义函数名() - 临时返回变量接收
如果只是临时排查问题要查看变量值,直接把要检查的变量加到函数的返回值列表里,主程序调用函数的时候用全局变量接收返回结果,接收到的变量属于全局作用域,自然会显示在变量资源管理器里,排查完删掉多余的返回逻辑就行。
不建议为了方便看变量就把所有函数内的代码全挪到全局作用域写,会彻底打乱代码结构,后续改bug、调整逻辑的成本会非常高,断点调试是日常开发排查问题的标准操作,用熟了效率很高。
内容的提问来源于stack exchange,提问作者Grootgeweer
相关产品推荐
相关产品推荐

