如何确认调用的是numpy.array而非Python内置array函数?
首先明确说:这个优先级是自动生效的,当你用from numpy import array这种方式导入后,Python会优先使用你导入的numpy版本的array,而不是内置的同名函数。下面给你几个简单的方法来确认:
打印函数本身看标识
直接在代码里加一行print(array),运行后如果输出里包含numpy相关的路径(比如<function numpy.core.multiarray.array at 0x...>),那就是numpy的array;如果是内置函数,会显示<built-in function array>。检查返回值的类型
执行math_stuff = array(stuff)之后,打印type(math_stuff)。如果结果是<class 'numpy.ndarray'>,毫无疑问用的是numpy的array;要是返回的是<class 'array.array'>,那才是Python内置的array类型(不过你没导入内置array模块的话,这种情况根本不会出现)。利用IDE的跳转功能
不管是PyCharm、VS Code还是其他常用IDE,按住Ctrl(Mac上是Cmd)点击代码里的array,如果跳转到numpy库的array函数源码文件,就说明当前调用的是numpy版本;要是跳转到Python内置的array.py,那才是内置函数。
再补充下优先级的底层逻辑:Python的名称查找遵循「局部作用域→全局作用域→内置作用域」的顺序。你用from numpy import array把这个函数导入到了当前的全局作用域里,所以当你调用array()时,解释器会先找到这个全局作用域里的numpy版本,不会再去内置作用域找那个同名的函数。这个规则是Python解释器默认的,完全自动生效,不用你额外做任何设置。
唯一需要注意的是如果有重复导入的情况:比如你先from array import array(导入内置array),再from numpy import array,那后面的导入会覆盖前面的,最终用的还是numpy的array;反过来的话就会用内置的。不过在你的代码场景里,只导入了numpy的array,所以完全不用担心。
内容的提问来源于stack exchange,提问作者rocksNwaves

