我正在编写一个烧瓶应用程序,我发现我有很多通用的实用程序函数。
以下是我认为是通用实用程序函数的函数类型的示例:
def make_hash():
return defaultdict(make_hash)
def file_read(filename):
with open(file_name_, 'r') as f:
return f.read()
def file_write(filename, data):
with open(filename, 'w') as f:
f.write(data)
我想把这些功能一起扔到一个单独的模块中。但是,如果我有以下问题,我很好奇:
问题: - 将泛型实用程序函数分组的pythonic方法是什么?我应该创建一个单独的模块吗?很好奇其他人在组织这类代码时所做的事情。
答案 0 :(得分:2)
我认为它与Python没有多大关系,它更像是一个设计决策。
对于这些线路,我不会单独制作模块;但是,如果你使用它2至3次我不会复制代码。如果您以后想要更改某些内容,则只需要进行一项更改,从而保持功能一致。
此外,这些方法似乎非常通用,因此您可以在以后的其他项目中轻松使用它们。
我认为你想让它们变得静止(@static_method
)。
我主要做的是按类型分组通用实用程序类,即在您的情况下为一个字典文件(有1个方法)和一个用于文件(有2个方法)。稍后可能会添加更多方法,但功能按类型/用法分组。
答案 1 :(得分:0)
在python中我们有一个名为Package(一个通常的文件夹,其中包含一个名为__init__.py
的空文件),它用于包含所有模块,这样我们就可以创建一些名称间距。
您的应用程序可以使用。
访问自己的名称空间 例如,具有以下文件
MyPackage/__init__.py (empty)
MyPackage/webapp.py (your web application)
MyPackage/utils.py (generic utilities)
在webapp.py中你可以有这样的东西
from .utils import *
或逐一列出
from .utils import file_read, file_write
注意utils
之前的点前缀答案 2 :(得分:0)
您可以采取一些措施来减少模块文件的数量,同时保留模块的子分类。创建多级模块功能: myModule.Hash<> myModule.FileIO<>
这样您就可以根据自己的喜好导入单个组件。