Spyder代码打印变量shape正常,控制台输入变量名报未定义错误排查
问题原因及解决办法
变量处于局部作用域
如果X_train1是在函数内部定义的(比如数据预处理、模型训练的函数里),脚本运行时函数执行完毕后,局部作用域内的变量会被自动回收,不会进入全局命名空间。例如:def process_data(): X_train1 = load_and_transform_data() print(X_train1.shape) # 此处能正常输出 process_data()解决办法:要么在函数内用
global X_train1声明变量为全局,要么让函数返回变量并在全局作用域接收:def process_data(): X_train1 = load_and_transform_data() return X_train1 X_train1 = process_data()脚本运行在独立命名空间
Spyder有两种核心运行模式:「在当前控制台运行」和「在专用控制台运行」。如果选了后者,脚本的变量会被隔离在单独的命名空间中,你手动输入命令的主控制台无法访问这些变量。
解决办法:点击运行按钮旁的下拉菜单,选择「Run in current console」(不同版本翻译可能略有差异),重新运行脚本即可。脚本末尾删除/覆盖了变量
检查脚本最后是否存在del X_train1、X_train1 = None这类语句,或者后续代码将X_train1重新赋值为其他对象,导致脚本运行完毕后变量已被销毁或覆盖。控制台内核状态异常
偶尔Spyder的IPython控制台会出现缓存错乱或状态异常,导致无法识别已运行的变量。解决办法:点击控制台右上角的「重启内核」按钮(循环箭头图标),重新运行脚本后再尝试访问变量。
内容的提问来源于stack exchange,提问作者A. Gehani
相关产品推荐
相关产品推荐

