Python:导入异常

时间:2011-12-05 00:25:03

标签: python import set intersection

是否可以从包中导入除一个模块以外的所有内容?

我需要在我的类中使用的特定库中的许多模块,但看起来它使用了我需要的其中一个模块的相同模块名称。

我需要使用set操作和交集,但是当我从我的类中导入该库时,它会因此而给我一个错误。

我不想单独导入它或将名称放在每个方法的前面,因为我经常使用它。

除了像set这样的特定方法之外,python还有一种方法可以导入所有内容吗? 或者可能稍后再次导入set部分?

3 个答案:

答案 0 :(得分:7)

不,from ... import * except blah, bleh, bluh没有术语。您可以编写自己的导入功能来支持它,也可以执行以下操作:

from xyz import *
del set

将停止遮挡内置set,以便您可以再次使用它。然后,如果您需要xyz.set功能,则可以执行以下操作:

from xyz import set as xyzset

注意:from ... import *不是通常的好习惯,你应该确保你使用这种方式的模块支持它 - 如果他们不明确说他们的设计是以这种方式使用,那么你不应该(除非你喜欢以后调试奇怪的问题;)。

答案 1 :(得分:0)

我想你想要的是:

from thing import a, b, c, d, e, f

将从a, b, c, d, e, f导入thing

AFAIK,无法进行from thing import all but a, b, c
那就是为什么

import thing
thing.a

首先存在。

答案 2 :(得分:0)

我不确定我完全理解发生了什么(给出实际的模块名称可能有帮助)。但是,根本不认为做from ... import *是不好的做法,因为那时特定事物的来源并不明显。相反,请from ... import thingA, thingB, thingC

您也可以执行import ... as shortname,然后将方法称为shortname.whatever(其中shortname显然可能非常短暂。)