我正在改进我原来的问题(因此我编辑了这篇文章):
假设我们有一个名为“PackageA”的包。在这个包中,我们有一个子包叫做“SubPackageA”。在这个子包中,我们有一个名为“ModuleA”的模块,这个模块包含一个名为“functionA”的函数。你知道吗
我知道为了调用此函数,我必须执行以下导入操作:
import PackageA.SubPackageA.ModuleA
然后,我可以通过以下方式调用函数:
PackageA.SubPackageA.ModuleA.functionA()
我也明白我可以做到:
from PackageA.SubPackageA.ModuleA import functionA
然后我可以通过以下方式调用函数:
ModuleA.functionA()
我不清楚的是:可以通过以下方式导入包和/或子包:
import PackageA
import PackageA.SubPackageA
但我这样做有什么好处呢?毕竟,为了能够调用“functionA”,我必须专门导入模块,那么导入完整的包和/或完整的子包有什么好处呢?你知道吗
谢谢你, 塔尔。你知道吗
我正试图通过进一步的研究来回答我自己的问题。让我们忽略子包以使其更简单。你知道吗
假设我有“PackageA”,在这个包中,我有一个名为“ModuleA”的模块,其中包含一个名为“functionA”的函数。你知道吗
而不是写:“导入模块包装“在我的主文件中,我可以在PackageA dunder init文件中写:“from PackageA import ModuleA”,然后在我的主文件中,我可以简单地写:“import PackageA”并且仍然能够调用函数(通过写包装模块功能()". 你知道吗
如果您的包中有一个模块,这就没有意义了,但是使用包的整个思想是将相互关联的多个模块组合在一起,如果您从包的dunder init文件导入所有模块,那么在代码(主文件)中,只需导入软件包,即可访问所有模块的所有功能,而不是单独导入每个模块。
我说得对吗?你知道吗
相关问题 更多 >
编程相关推荐