%whos是最轻量可靠的变量查看方式,列出变量名、类型、尺寸及值摘要,不依赖前端,支持远程内核;%who_ls仅返回变量名列表,适用于批量处理或存在性判断。

直接用 %whos 查看当前变量列表
这是最轻量、最可靠的方式,不需要额外安装或配置。执行后会列出所有变量名、类型、尺寸(对数组/DF)、值摘要(如字符串长度、数字值等)。它不依赖前端渲染,远程内核、终端版 Jupyter Console 里也完全可用。
-
%whos默认只显示非内置变量(即你定义的),加-g参数可包含全局变量(如__name__) - 如果变量太多,输出可能被截断;想看完整列表,先运行
from IPython.utils.text import SList; SList.get_lines = lambda self: self再%whos(极少需要) - 注意:
%whos不刷新自动更新——每次想看最新状态,必须重新执行该命令
用 %who_ls 获取纯变量名列表
当你只需要变量名(比如后续要批量处理或检查是否存在),%who_ls 返回的是 Python list,可直接赋值给变量或参与逻辑判断。
-
vars = %who_ls→ 得到['df', 'x', 'result']这样的列表 -
if 'temp' in %who_ls: print("存在")可用于条件分支 - 它不显示类型或值,比
%whos更快,尤其在变量极多时(如加载了上百个 DataFrame) - 不能用在函数内部或嵌套作用域——只反映当前交互式命名空间(
__main__)里的变量
图形化变量浏览器:插件 vs PyCharm
如果你习惯 MATLAB 或 VS Code 那种点开就看值的体验,两个主流方案效果差异明显:
- 用
jupyter_contrib_nbextensions插件启用Variable Inspector:需pip install jupyter_contrib_nbextensions+ 手动启用,但新版 JupyterLab 3+ 已不兼容,且容易和其它 nbextension 冲突 - PyCharm Pro 的 Jupyter 支持:本地/远程内核都自带
Variables标签页,点击变量名即可展开 DataFrame、ndarray 等结构,但前提是通过 PyCharm 启动 notebook,不是浏览器访问独立 Jupyter Server - 两者都不支持“实时监听”——变量变化不会自动刷新界面,仍需手动点击刷新按钮或重执行单元格
为什么不用 dir() 或 locals()
它们看起来更“原生”,但实际用起来问题不少:
-
dir()会返回大量以__开头的魔法方法和内置属性(如__builtins__),噪音极大 -
locals()在 notebook 单元格中返回的是一个快照字典,但它的键不一定对应你定义的变量(例如含_、__前缀的临时对象),且无法过滤掉函数、模块等非数据对象 - 二者都不区分变量来源(用户定义 vs 导入模块),而
%whos和%who_ls明确只展示当前命名空间中的活跃变量
%whos 输出几十行,其中只有两个 DataFrame 名字相似(df_clean 和 df_cleaned),这时靠肉眼扫很容易漏看。建议配合 ?df_clean 或 df_clean.shape 单独查证,别指望列表本身带上下文。


















