Python-将函数放在子包命名空间下,不带.py文件
我认为这是一个与python包相关的简单问题,而我不知道关键字是什么,也没有在互联网上找到任何东西。标题可能不清楚,让我在下面举例说明 因此,我有一个习惯,在我自己的软件包中保留各种各样的功能,例如:Python-将函数放在子包命名空间下,不带.py文件,python,packages,Python,Packages,我认为这是一个与python包相关的简单问题,而我不知道关键字是什么,也没有在互联网上找到任何东西。标题可能不清楚,让我在下面举例说明 因此,我有一个习惯,在我自己的软件包中保留各种各样的功能,例如: mytools |---__init__.py |---plt_cb_miscs.py |---project_miscs.py |---datum_conv.py 当然,当我将mytools.project\u miscs导入为pmisc时,我可以调用pmisc.is\u oddnum,pmi
mytools
|---__init__.py
|---plt_cb_miscs.py
|---project_miscs.py
|---datum_conv.py
当然,当我将mytools.project\u miscs导入为pmisc
时,我可以调用pmisc.is\u oddnum
,pmisc.read\u logcsv
,pmisc.plot\u allfig
等函数,这些函数在project\u miscs.py
中定义
现在,假设pmisc.plot\u allfig
的代码变得太大了。我想把它放在单独的.py文件中,同时把它放在名称空间project\u XXX\u misc
下
我正在考虑将project\u misc
制作成一个子包:
mytools
|---__init__.py
|---plt_cb_miscs.py
|---project_miscs
|---__init__.py
|---plot_allfig.py
|---...
|---datum_conv.py
但是仍然有一些很小的函数,比如
is_oddnum
,我想将它们保存在一个相同的.py文件中,并从mytools.project_miscs.is_oddnum
调用它们,而不将其拆分为is_oddnum.py
。有办法做到这一点吗?或者我应该放弃这个想法,创建另一个.py来在目录project\u miscs
下收集它们吗?如果我正确理解了您的问题:是的。将您的小函数放入项目杂项
包的初始化.py
。在同一个\uuuu init\uuuuuuuuuuuuuupy
中从plot\u allfig.py导入函数,如下所示:from.plot\u allfig Import plot\u allfig
。然后你可以简单地导入项目作为pmisc
并做pmisc.is\u oddnum()
以及pmisc.plot\u allfig()
@shmee哦哇,这正是我想要的!非常感谢你。我认为\uuuu init\uuuuuuuy.py
相当于类中的def\uuuuu init\uuuuo():
,并且可以将其他def语句放入其中(因为我们通常在声明def\uuuuu init\uuuo():
)。你想回答它,以便我可以选择它并关闭这个帖子吗?在某种程度上,你实际上可以考虑<代码>在Python中,在函数中声明函数是非常好的。至于将此作为答案:不,有足够的资源(甚至可能是这样)以更一般的方式解释Pythons的导入系统和\uuuu init\uuuu.py
。我不认为这样一个具体的答案会给SO带来太多的好处,我也不是那么渴望rep:)无论如何,很高兴我能帮上忙。好的,仍然非常感谢你的帮助:)我会去检查Python导入系统的细节。