使用由另一个包导入的包是非Python的,还是直接导入?
例如,我想使用使用由另一个包导入的包是非Python的,还是直接导入?,python,import,Python,Import,例如,我想使用numpy的isnan函数。我已经加载了熊猫库: import pandas as pd pd.np.isnan(1) #=> False 这是可行的,但有什么缺点吗?还是我应该写 import pandas as pd import numpy as np np.isnan(1) #=> False 什么是好的做法?您应该使用第二种方法,至少有四个原因: 正如@abarnert在评论中所说,它遵循PEP 0008中所述的Python代码的官方指南。政治公众人物
numpy
的isnan
函数。我已经加载了熊猫库:
import pandas as pd
pd.np.isnan(1) #=> False
这是可行的,但有什么缺点吗?还是我应该写
import pandas as pd
import numpy as np
np.isnan(1) #=> False
什么是好的做法?您应该使用第二种方法,至少有四个原因:
os.path
或包的\uuuu init\uuu
模块
公开子模块的功能
由于NumPy是熊猫图书馆的一个未经记录的方面(无论是在帮助(pd)
中还是在官方网站上都没有提及),因此不应将其视为熊猫图书馆的官方部分我认为这确实有一个基于事实的答案,包含在中,应该重新打开。简言之:
np
没有记录在help(pd)
或Pandas的基于web的帮助中,并且“所有未记录的接口都应该假定为内部接口。”Pandas没有一个排除np
或import numpy as
的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
的,这一事实不太理想(虽然没有达到我称之为bug的程度),但这并不意味着没有文档化的意外暴露的名称是公共界面的一部分,重新导入numpy
,对性能没有影响,因为Python缓存导入。@EthanFurman:我怀疑他是否担心性能影响。任何导入速度最慢的程序都不太可能首先需要对性能进行优化,当然是第二个。如果需要numpy
,请导入并使用。不管其他软件包是否在使用它,这都不是你可以依赖的。他们的内部API可能会发生任何变化,您的代码也会崩溃;我敢肯定,有一些Pandas方法被记录为显式返回和/或获取NumPy数组,而Pandas是基于NumPy构建的,这一事实我想几乎每个人都会这么想。(然而,这并不意味着熊猫必须将numpy
导出为np
,当然,这又回到了前两个答案。)我只是将这一点从我的评论转移到了我的答案中。我不经常使用熊猫,所以我只知道它的基本知识。我会把措辞改得不那么严格。