在python中导入模块时始终包含文件

2024-10-01 22:41:53 发布

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

我怎么能有一个文件,总是导入时,然后模块导入?你知道吗

例如:考虑这个模块。你知道吗

/ myMod
   / __init__.py
   / important.py               # defines myFunc
   / extraFunctions.py
   / classDefinitions.py

任何使用模块的人都可以使用的所有函数重要.py。我要重要.py默认包含在myMod中。所以使用模块是这样的。你知道吗

import myMod
myMod.myFunc()

而不是

from myModimport important
important.myMod()

或者

import myMod
myMod.important.myFunc()

important.py是否应该重命名为__init__.pymain.py__main__.py,或者__init__.py是否可以编辑为将important.py作为默认值,甚至只是从中选择函数?你知道吗


Tags: 模块文件函数frompyimportinitmain
2条回答

除了Raydel的回答之外,我还想补充一点:如果您的important模块包含您不想导出的私有函数,那么有一种方法可以控制它。举个例子:

# important.py

# This magic variable controls what gets import via
# from important import *
__all__ = ['dothis', 'dothat']

def dothis():
    pass

def dothat():
    pass

def private1():
    pass

使用魔法变量__all__,您可以控制哪个函数得到export。你知道吗

更新

__init__.py,您可以执行以下操作:

from important import dothis, dothat

这是控制导入哪个实体(函数、变量)的另一种方法。你知道吗

但是,如果从__init__.py,则可以执行以下操作:

import important
important.private1() # OK

或:

from important import private1 # OK, too

这意味着您可以重写__all__魔术变量。在我看来,前一种方法更好,因为它不会使private1对那些导入myMod的人可用。你知道吗

您不必将important.py重命名为__init__.py,只需添加到__init__.py文件:

from important import *

仅此而已。你知道吗

相关问题 更多 >

    热门问题