是否使用由另一个包导入的包是unpythonic,还是应该直接导入它?

前端之家收集整理的这篇文章主要介绍了是否使用由另一个包导入的包是unpythonic,还是应该直接导入它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,我想使用numpy的isnan函数.我已经加载了pandas库:
import pandas as pd

pd.np.isnan(1) #=> False

这有效,但这有什么不利之处吗?或者我应该写

import pandas as pd
import numpy as np

np.isnan(1) #=> False

什么是好习惯?

解决方法

您应该使用第二种方法至少有四个原因:

>正如@abarnert在评论中所说,它遵循P000 0008中Public and internal interfaces规定的Python代码的官方指南.具体来说,PEP说:

All undocumented interfaces should be assumed to be internal.

和:

Imported names should always be considered an implementation detail.
Other modules must not rely on indirect access to such imported names
unless they are an explicitly documented part of the containing
module’s API,such as os.path or a package’s__init__ module that
exposes functionality from submodules.

因为NumPy是Pandas图书馆的无证方面(在帮助(pd)或官方网站上都没有提及),因此不应将其视为Pandas的官方部分.
> “Explicit is better than implicit”,第二种方法明确表示我们在代码中直接使用numpy库.然而,第一种方法通过熊猫图书馆“滑入”.>代码分析工具将无法看到您的代码直接使用NumPy.这可能会生成有关您的代码错误数据(例如它具有哪些依赖关系).> Pandas包含NumPy的事实只不过是一个实现细节.意思是,如果Pandas的制造商改变他们的内部代码以任何方式改变这个细节,那么你的所有Numpy代码都可能在它真的不应该突然中断. Numpy和Pandas是两个独立的东西,应该这样对待.

猜你在找的Python相关文章