2

我对python的导入机制不是很清楚。让我困惑的一件事是:当 python 导入一个模块时,它是否也导入了那里导入的名称。这是代码:

# A.py
def A_func():
   pass;

# B.py
from A import *;
def B_func():
   pass;

# C.py
from B import *;
def C_func():
   # I can use B_func, OK, no problem.
   # I can use A_func here, is import recursive?

如果 python 递归导入,我的代码是一个坏习惯吗?如果我添加会发生什么

from A import *;

到 C.py? 导入两次是否会导致任何开销?或者我应该避免'from xx import *'并且只导入所需的名称?

谢谢!

4

2 回答 2

2

代码仅在第一次import调用模块时执行。后续导入仅复制名称和引用。

话虽如此,不要导入*.

于 2013-07-18T07:08:44.983 回答
-1

你只能在 C.py 中使用 B_func。您将无法访问 A_Func。如果要在 A 中使用定义,则必须从 A 导入。编辑:对不起,我的错。我理解错误

于 2013-07-18T07:15:56.653 回答