Python - 通用函数的最佳位置

时间:2013-04-29 09:09:29

标签: python function utility

我正在编写一个烧瓶应用程序,我发现我有很多通用的实用程序函数。

以下是我认为是通用实用程序函数的函数类型的示例:

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)

我想把这些功能一起扔到一个单独的模块中。但是,如果我有以下问题,我很好奇:

  • 有两个独特的功能可以保证一个单独的模块。即上面的file_read和file_write函数可以进入file.py模块,但是由于它的两个功能,我觉得这可能有些过分。
  • 在我的应用程序中,我每个函数使用这些函数2-3次,所以我在他们创建这些实用函数的幌子下移动应该帮助我保存一些代码行,并希望能让我更有效率。

问题: - 将泛型实用程序函数分组的pythonic方法是什么?我应该创建一个单独的模块吗?很好奇其他人在组织这类代码时所做的事情。

3 个答案:

答案 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<>

这样您就可以根据自己的喜好导入单个组件。