Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-将函数放在子包命名空间下,不带.py文件_Python_Packages - Fatal编程技术网

Python-将函数放在子包命名空间下,不带.py文件

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

我认为这是一个与python包相关的简单问题,而我不知道关键字是什么,也没有在互联网上找到任何东西。标题可能不清楚,让我在下面举例说明

因此,我有一个习惯,在我自己的软件包中保留各种各样的功能,例如:

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导入系统的细节。