是否可以从包中导入除一个模块以外的所有内容?
我需要在我的类中使用的特定库中的许多模块,但看起来它使用了我需要的其中一个模块的相同模块名称。
我需要使用set操作和交集,但是当我从我的类中导入该库时,它会因此而给我一个错误。
我不想单独导入它或将名称放在每个方法的前面,因为我经常使用它。
除了像set
这样的特定方法之外,python还有一种方法可以导入所有内容吗?
或者可能稍后再次导入set
部分?
答案 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
显然可能非常短暂。)