当python导入时,是否在'import'语句中导入名称?

时间:2013-07-18 07:06:24

标签: python python-2.7

我对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?是否通过导入两次导致任何开销?或者我应该避免'从xx导入*'并只导入所需的名称?

谢谢!

2 个答案:

答案 0 :(得分:2)

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

话虽如此,不会导入*

答案 1 :(得分:-1)

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