- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
例如,我想使用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 在评论中所说,它遵循 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 的官方部分。
"Explicit is better than implicit"第二种方法明确表示我们直接在代码中使用 NumPy 库。然而,第一种方法有点通过 Pandas 库“插入”。
代码分析工具将无法看到您的代码直接使用了 NumPy。这可能会生成有关您的代码的错误数据(例如它具有哪些依赖项)。
Pandas 包含 NumPy 这一事实只不过是一个实现细节。意思是,如果 Pandas 的制造者以任何方式改变他们的内部代码来改变这个细节,你所有的 Numpy 代码都可能在不应该的时候突然崩溃。 Numpy 和 Pandas 是两个不同的东西,应该这样对待。
关于python - 使用另一个包导入的包是不是 unpythonic,还是我应该直接导入它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27455271/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我正在和我的一位同事争论,是否所有的 Python 类真的都需要是可散列的。我们有一个包含符号表达式的类(类似于 SymPy)。 我的论点是,由于我们无法比较两个表达式是否相等,因此不应允许散列。例如
考虑执行以下操作的这两个函数:给定一个单词,它生成一个列表,其中单词中的每个位置都被字母表中的每个字符替换 alphabet = 'abcdefghijklmnopqrstuvwxyz' 版本 1(P
我的同事刚刚指出我对内部类的使用似乎是“unpythonic”的。我猜它违反了“平面优于嵌套”的启发式。 这里的人怎么看?内部类是否比 Python 更适合 Java 等? 注意:我不认为这是一个“主
例如,我想使用numpy 的isnan 函数。我已经加载了 pandas 库: import pandas as pd pd.np.isnan(1) #=> False 这行得通,但有什么缺点吗?或者
在设计类时,抽象方法会很有帮助。据我所知,Python 没有强制继承类实现抽象方法的机制。在我的代码中(参见下面的示例),我在基类中输入了一个失败的断言,如果未实现则导致运行时错误。这是 unpyth
最近有人向我展示了我们可以像 Perl 那样在 Python 中打印变量。 代替: print("%s, %s, %s" % (foo, bar, baz)) 我们可以做: print("%(foo)
我是一名优秀的程序员,十分优秀!