python - Python 中的 all(map) 和 any(map) 输出 bool 值,但 IPython 中输出 true 映射对象

标签 python numpy ipython any shadowing

我正在使用 python 3.10.1,通过 ipython(7.31.0,调用相同的 python 3.10.1)以交互方式进行探索,然后在脚本准备好后直接通过 python 进行探索。

我的代码中有一个错误,我将其简化为两者之间的以下行为差异:

[IPython]

In [1]: any(map(bool, ("")))
Out[1]: <map at 0x7f7f2d6061d0>

[CPython]

>>> any(map(bool, ("")))
False

由于 IPython 中的输出 map 对象是真实的,因此当在 if 语句中使用代码时,两个程序将给出相反的结果。我想知道是什么导致了这种差异,是否可以采取任何措施来修复它,以及是否存在我应该注意的其他类似错误(功能?)。

最佳答案

检查any.__module__。它应该是'builtins'。如果没有,则执行del any

此症状通常意味着您已经隐藏了内置 any与 numpy 的同名函数:

>>> any(map(bool, ("")))
False
>>> from numpy import any
>>> any(map(bool, ("")))
<map object at 0x7ffff6874a90>

IPython will do this如果您以 --pylab 模式启动它,或者使用 %pylab 魔法启用它。

关于python - Python 中的 all(map) 和 any(map) 输出 bool 值,但 IPython 中输出 true 映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75632678/

相关文章:

python - 使用 easy_install 或 setup.py install 在 OSX 上安装 Python 模块

python - 如何用零除返回0

python - 求和对 python map 的预期效果

python-2.7 - 如何将 IPython 解释器嵌入在 IPython Qt 控制台中运行的应用程序中

Python 3 Tkinter - 使用网格创建覆盖 100% 宽度的文本小部件

python - 操纵列表的列表

python - 无法在 Google Cloud Platform 上的保留静态地址上查看 Flask 应用程序

python - 有效地将列表合并到稀疏列表中

python - 平滑逼近 floor 函数以用于反向传播

ipython - 让 IPython 使用我原来的启动脚本