在C/C++中,如果我们有以下标头a.h
#include "b.h"
#include "c.h"
#include "d.h"
然后,如果我们包括a.h
,那么b.h
、c.h
和d.h
也会自动包括在内。因此,很容易同时包含多个相关的标头。
然而,在Python中,情况似乎有所不同。假设我们有一个名为a.py
的Python模块,如图所示:
import b
import c
import d
在这种情况下,即使不自动导入I import a
、b
、c
和d
。
简而言之,我想找到一种简单地导入一组模块的方法。有什么办法让我这么做吗?
您可以使用另一种方法:
from a import *
在C/C++中使用#include时,它不是编译器的一部分。它是预处理器的一部分。如果我的main.cpp有一个include,预处理器会复制包含文件的所有代码。在Python中,情况有所不同,因为预处理器不存在,解释器只为已导入的文件导入特定模块。
如果要导入多个模块,则必须使用from a import *
。
有几种方法可以在python 中导入
1( import a
这将允许您使用模块a
中的任何内容,但在调用它之前,您需要使用a.foo
2( import somethinglong as a
这需要一个长的模块名称,并为其分配a
以防止somethinglong.foo
,但具有a.foo
3( from a import b
这将只允许导入b
,这样就不会将库作为一个完整的包括在内
4( from a import *
这将从模块a
导入所有内容,并允许您使用不带前缀的任何内容,即取代a.foo
而仅使用foo
注意#4是您想要的。
# x.py
from y import *
print z.hello
# y.py
import z
# z.py
hello = 'there'
因此,看起来最安全和最Python的方式是使用分隔MyImports.py等文件
import b
import c
import d
和
from MyImports import *
在主模块中?
我建议添加一种方法,运行导入到您的低级实用程序模块
# MyUtils.py
def importAbc():
import b
import c
import d
但这行不通。。。