Python导入所有模块都导入另一个模块sam

2024-05-17 19:43:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要的是,我有foo.py,它从bar1和bar2导入类,它们都需要bar3,例如

食品

from src import *
...

src/初始化

from bar1 import specialSandwichMaker
from bar2 import specialMuffinMaker

src/巴1.py

import bar3
class specialSandwichMaker(bar3.sandwichMaker)
...

src/bar2.py型

import bar3
class specialMuffinMaker(bar3.muffinMaker)
...

有没有一种更有效的方法可以让bar3在bar1和bar2文件中可用,而不让它们直接导入呢?


Tags: 方法frompyimportsrc食品fooclass
2条回答

这是完全有效的;当导入模块时,Python会将其添加到sys.modulesimport语句首先检查这个字典(因为字典查找很快,所以速度很快),以查看模块是否已经导入。因此,在本例中,bar1将导入bar3,并将其添加到sys.modules。然后bar2将使用已经导入的bar3

您可以通过以下方式验证:

import sys
print( sys.modules )

注意from src import *是错误的代码,您不应该使用它。或者import src并使用src.specialSandwichMaker引用,或者from src import specialSandwichMaker。这是因为模块不应该污染彼此的名称空间——如果这样做from src import *,那么src中定义的所有全局变量也将出现在您的名称空间中。这很糟糕。

相关问题 更多 >