use*_*400 2 python numpy ipython shadowing any
我使用 python 3.10.1,通过 ipython (7.31.0,调用相同的 python 3.10.1)交互进行探索,然后在脚本准备好后直接通过 python 进行探索。
我的代码中有一个错误,我将其简化为两者之间的以下行为差异:
[Python]
In [1]: any(map(bool, ("")))
Out[1]: <map at 0x7f7f2d6061d0>
Run Code Online (Sandbox Code Playgroud)
[CPython]
>>> any(map(bool, ("")))
False
Run Code Online (Sandbox Code Playgroud)
因为 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>
Run Code Online (Sandbox Code Playgroud)
如果您已在模式下启动 IPython --pylab,或者使用魔法启用它,IPython 将会执行此操作%pylab。