例如,如果我导入如下:
from numpy import empty, full, zeros, matrix, arange, asarray, array
然后我可能会有一些我生成的列表:
stuff = []
for i in range(N):
stuff.append(things)
然后,我意识到我必须做一些数学!所以我输入:
math_stuff = array(stuff)
由于我没有输入numpy.array或np.array,根据我的导入方式,我怎么知道我的IDE比内置版本更喜欢numpy版本?这是自动的吗?
我检查了numpy.array()和python内置于array()中的文档,看起来它们都接受了相同的"列表,如"论点。
答案 0 :(得分:2)
正如评论者所说,只需查看最新的import语句,就可以轻松判断哪一个正在被使用。但是,如果您感到担心/困惑,您还可以使用Python方便的内置反射功能直接检查函数或类所源自的模块。
例如,以下Python语句:
print(array.__module__)
如果从'numpy.core.multiarray'
包导入array
,将打印出字符串numpy
,如果从'array'
包导入array
,则打印出字符串x.__module__
dir(x)
失败,请通过__module__
@ShadowRanger提出了一些优点,即某些Python对象没有import array
属性。特别是,如果仅运行array
,则print(array.__module__)
是一个模块,dir()
调用将失败。在这种情况下,您始终可以通过dir()
函数发现实际可用的反射信息。
x
很容易成为我最喜欢的Python功能。对于任何Python对象dir(x)
,x
打印出import array
的完整属性列表。例如,假设您刚刚运行dir(array)
,则执行['ArrayType',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'_array_reconstructor',
'array',
'typecodes']
将打印出来:
__module__
这表明即使数组模块缺少__name__
,也有其他反映信息,例如__file__
和f
。
答案 1 :(得分:1)
如果可以的话,最好的方法可能是保持名称空间清洁:
执行:import numpy
或import numpy as np
,
代替:from numpy import empty, full, zeros, matrix, arange, asarray, array
如果不适合您,并且不清楚之前的内容,help(array)
或repr(array)
或type(array)
将会很方便。 (如评论中所述)