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