我有一个模块test.py
,如下所示:
def a():
return "Hey!"
def b():
return a()
在另一个模块中,我导入了函数b
,如下所示:
from test import b
现在,当我在第二个模块中print b()
时,我得到Hey!
作为输出。但考虑到我只导入了函数b
而不是a
,我预计会出现一个NameError。
from x import y
语句是否自动从y
导入x
的所有相关函数和变量?
答案 0 :(得分:0)
from test import b
这不会从b
导入除test
以外的任何功能。它只是使函数b()
可用于当前模块。但是如果你使用
import test
然后您可以访问test
中的所有功能。现在,您可以将test
中的任何函数调用到当前模块中。
最好的方法是在当前模块中使用globals()
。在第一种情况下(即from test import b
),globals()
将显示模块b
中的函数test
,这意味着您可以访问仅 {{来自b
的方法。
但是,在后一个(即test
)中,import test
将显示模块globals()
本身,而不是函数test
。因此,您可以访问整个模块b
及其所有方法。
您可能会发现this blog有帮助。