导入不起作用

2022-03-31 00:00:00 python python-import

问题描述

我有两个文件,分别是a.pyb.py

在a.py中, 我们有

import xxx
from b import *

在b.py中,我们有一个需要module xxx的函数。 现在,当从a.py调用b.py中的函数时,它找不到模块xxx

为什么会这样?这里有什么解决方案? 由于某些原因,我无法在b.py中执行import xxx

MCV:

a.py

import xxx
from b import *
fun()

b.py

def fun():
    xxx.dosomething()

错误:

Global name xxx not defined


解决方案

在Python中,所有模块都有自己的全局命名空间,并创建包含所有内置名称的命名空间,并且模块不与其他模块共享它仅内置命名空间是通用的,可用于所有模块,当您将其添加到模块全局命名空间而不是内置命名空间时

IMPORT语句做两件事:

如果请求的模块尚不存在,则执行导入文件中的代码

Two使其可以作为一个模块使用。后续导入语句将跳过第一步。

要点是,模块中的代码将只执行一次,无论它从各种其他模块导入多少次。

SOURCE

相关文章