例如,我想使用numpy
的{{1}}函数。我已经加载了pandas库:
isnan
这有效,但有什么不利之处吗?或者我应该写
import pandas as pd
pd.np.isnan(1) #=> False
什么是好习惯?
答案 0 :(得分:10)
你应该使用第二种方法至少有四个原因:
正如@abarnert在评论中所说,它遵循PEP 0008中Public and internal interfaces下所述的Python代码的官方指南。具体来说,PEP说:
应假设所有未记录的接口都是内部接口。
和
导入的名称应始终被视为实施细节。 其他模块不得依赖于对这些导入名称的间接访问 除非它们是明确记录的部分内容 模块的API,例如
os.path
或包的__init__
模块 公开子模块的功能。
因为NumPy是Pandas库的一个未记录的方面(在help(pd)
或官方网站上都没有提及),所以它不应被视为Pandas的官方部分。
"Explicit is better than implicit",第二种方法明确表示我们在代码中直接使用NumPy库。然而,第一种方法通过熊猫图书馆“滑入”。
代码分析工具将无法看到您的代码直接使用NumPy。这可能会生成有关您的代码的错误数据(例如它具有哪些依赖关系)。
Pandas包含NumPy的事实只不过是一个实现细节。意思是,如果Pandas的制造商改变他们的内部代码以任何方式改变这个细节,那么你的所有Numpy代码都可能在它真的不应该突然中断。 Numpy和Pandas是两个不同的东西,应该这样对待。