Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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中正确的函数命名和导入_Python_Python Import - Fatal编程技术网

Python中正确的函数命名和导入

Python中正确的函数命名和导入,python,python-import,Python,Python Import,我开发了一个项目,其包/模块/功能结构与此类似: project/ │--mainfunc.py | └───functions/ │--__init__.py |--func_caller.py │ ├───subfolder1/ │ │--__init__.py │ │--func11.py │ │--func12.py │ └───subfolder2/ │--__init__.py

我开发了一个项目,其包/模块/功能结构与此类似:

project/
│--mainfunc.py
|
└───functions/
    │--__init__.py
    |--func_caller.py
    │
    ├───subfolder1/
    │   │--__init__.py
    │   │--func11.py
    │   │--func12.py
    │
    └───subfolder2/
        │--__init__.py
        |--func21.py
        |--func22.py
每个
funcXX.py
模块中都包含一个Python函数,名为:

# /project/functions/subfolder1/func11.py

def do_func11(args):
    # Do something
    return some_value
func_caller.py
文件一次调用每个
funcXX.py
模块中定义的函数。
func_caller.py
(其中包含所有导入)的顶部如下所示:

from subfolder1.func11 import do_func11 as df11
from subfolder1.func11 import do_func12 as df12
from subfolder2.func21 import do_func21 as df21
from subfolder2.func22 import do_func22 as df22
这似乎是一种不必要的复杂方式。我想简单地命名每个
funcXX.py
模块中的函数
main()

import subfolder2.func22 as df22
但这导致:

TypeError: 'module' object is not callable
正确的方法是什么?

试试以下方法:

from subfolder2.func22 import name_of_func

是否有理由将所有功能拆分为单独的模块?我会把你的功能组合成相关的模块。例如,将所有与数据库管理相关的函数放在一个模块中,等等。这样,您就可以从子文件夹1调用
。func import do_func11、do_func12、do_func21
。每个模块(即:
funcXX
)都已包含多个按相关性分组的函数。通常,我只需要在每个模块中调用一个函数(即:
do_funcXX
),该函数调用所有其他函数。这是可行的,但它只是将
作为xxxx
部分删除。我想做一些简单/简短的事情,比如:
import subfolder2.func22 as f22
。从subfolder2.func22 import name_of_func as f22如果你看这个问题,你会发现这正是我现在的做法,我建议将所有函数放在一个模块中,然后导入包含所需函数的模块。