为什么不建议混合使用“from x import y”和“import x”?

3

我的脚本包含以下两行作为导入语句:

import os
from os import path

对于我的脚本来说,这似乎是一种合理的方法:我经常使用 os.path,所以我想将其作为 path 访问。另一方面,我很少需要来自 os 的其他方法,所以对我来说写 os.access(...) 是可以接受的。

为什么这被不建议?例如,pychecker 就会抱怨。


你为什么不能直接写上三个额外的字符 os. 呢? - Amber
为什么不直接使用 path = os.path - lostyzd
@lostyzd 为了避免无效警告,你为什么要这样做? - agf
2个回答

6
通常情况下,从一个模块中导入名称并同时导入整个模块是很奇怪的。但在这种情况下,您正在导入一个子模块,所以似乎并不糟糕,尽管大多数人在函数调用中只使用“os.path”。
仅仅因为pychecker不喜欢它并不意味着你不能这样做。关闭那个警告。

这就是为什么它是一个警告。Pychecker不知道它是否是一个问题,所以你会得到通知。 - Spencer Rathbun

0

可能是因为您的脚本导入了os.path两次,浪费了额外的资源。也许您应该只调用您需要的os函数。


3
模块只会被导入一次,不会使用额外的资源。 - interjay
path并不是以“它有两个名称”的方式被导入两次,因为它是os中的一个模块,而不是一个类。 - agf
在这种情况下,可能只是不推荐,因为很难维护。 - Chriszuma
1
@Chriszuma 这是因为 pychecker 没有意识到 path 是一个模块而不是一个类。 - agf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接