gpt4 book ai didi

python - 使用另一个包导入的包是不是 unpythonic,还是我应该直接导入它?

转载 作者:太空狗 更新时间:2023-10-29 22:18:57 25 4
gpt4 key购买 nike

例如,我想使用numpyisnan 函数。我已经加载了 pandas 库:

import pandas as pd

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

这行得通,但有什么缺点吗?或者我应该写

import pandas as pd
import numpy as np

np.isnan(1) #=> False

什么是好的做法?

最佳答案

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

  1. 正如@abarnert 在评论中所说,它遵循 PEP 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 库的一个未记录的方面(help(pd) 和官方网站上都没有提及),所以不应将其视为 Pandas 的官方部分。

  2. "Explicit is better than implicit"第二种方法明确表示我们直接在代码中使用 NumPy 库。然而,第一种方法有点通过 Pandas 库“插入”。

  3. 代码分析工具将无法看到您的代码直接使用了 NumPy。这可能会生成有关您的代码的错误数据(例如它具有哪些依赖项)。

  4. Pandas 包含 NumPy 这一事实只不过是一个实现细节。意思是,如果 Pandas 的制造者以任何方式改变他们的内部代码来改变这个细节,你所有的 Numpy 代码都可能在不应该的时候突然崩溃。 Numpy 和 Pandas 是两个不同的东西,应该这样对待。

关于python - 使用另一个包导入的包是不是 unpythonic,还是我应该直接导入它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27455271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com