我对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导入*'并只导入所需的名称?
谢谢!
答案 0 :(得分:2)
代码仅在第一次为模块调用import
时执行。后续导入仅复制名称和引用。
话虽如此,不会导入*
。
答案 1 :(得分:-1)
你只能在C.py中使用B_func。您将无法访问A_Func。如果要在A中使用定义,则必须从A导入。 编辑:抱歉,我的不好。我理解错误