IPython / Spyder 不显示变量赋值的输出

IPython / Spyder do not show output of the assignment of a variable

我正在使用 Spyder 编写科学 Python 代码,但不知道以下问题是否真的是 Spyder 问题或 IPython 问题...

如果我创建一个变量(我想的是简单的类型,比如双精度数、ndarrays 等等),它的值不会在创建后立即显示。

例如,如果我这样做

s = x1 + x2

我希望看到(或者可以选择是否要看到)新创建的值s。 使用这些设置,我需要输入

s

刚完成赋值就可以看到结果。

仅供参考,我正在寻找的行为是通过 ;

的存在与否在 Matlab 控制台中实现的

明确一点:我问这个问题是为了节省键入 s(但有时名称更长)和回车笔画。所以你可以叫我懒惰

这不是 Python 的工作方式;作业没有值。

在 IPython/Spyder 中有一个隐藏的配置选项可以做到这一点,但只能使用 last 单元格分配。

In [1]: %config InteractiveShell.ast_node_interactivity='last_expr_or_assign'

In [2]: a = 1+1
Out[2]: 2

你也可以在你的IPython配置文件中设置它,它可以取的值为['all', 'last', 'last_expr', 'none', 'last_expr_or_assign']

来自 ipython --help-all

--InteractiveShell.ast_node_interactivity=<Enum>
    'all', 'last', 'last_expr' or 'none', 'last_expr_or_assign' specifying which
    nodes should be run interactively (displaying output from expressions).
    Choices: any of ['all', 'last', 'last_expr', 'none', 'last_expr_or_assign']
    Default: 'last_expr'

这可能并非在所有情况下都有效,例如元组分配、解包等,如果您遇到这些情况,请随时打开错误报告。

我还要警告您,IPython 中的内部工作方式非常棘手,因此可能会产生意想不到的后果。