我正在使用 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/