我正在开发一个Python Web应用程序,其中我有一些小模块可以提供非常具体的功能:session.py
,logger.py
,database.py
等等。并且通过“小”我的确意味着小;这些文件中的每一个目前包括大约3-5行代码,或者最多可能包含10行代码。我可能有一些导入和一个类定义或两个。我想知道,有什么理由我应该或不应该将这些合并到一个模块中,比如misc.py
?
我的想法是,拥有单独的模块有助于提高代码清晰度,稍后,如果这些模块有可能增长到10行以上,那么将它们分开就不会感觉如此糟糕。但另一方面,拥有一堆只有几行的文件似乎是一种浪费!并且多文件与单文件方法之间的资源使用有任何显着差异吗? (当然,我还远远不能担心资源的使用,但我忍不住要求......)
我检查过是否曾经问过这个问题,并没有看到任何特定于Python的内容,但如果它实际上是重复的,我会很感激被指向正确的方向。
答案 0 :(得分:6)
作为模块的用户,我更喜欢通过单个导入包含整个模块。除非有某些理由允许导入不同的替换项,否则不要让您的包的用户进行多次导入。
顺便说一下,没有理由单个模块不能包含多个源文件。最简单的情况是使用__init__.py文件将所有其他代码加载到模块的命名空间中。答案 1 :(得分:5)
我的想法是分开 模块有助于提高代码清晰度 稍后,如果有机会这些 模块增长到10多行,我 拥有它们会不会那么糟糕 分离。
此。保持它你的方式。
答案 2 :(得分:3)
我个人觉得将这样的事情保存在一个文件中更容易,只是为了在编辑器中编辑少量文件的实用性。
要做的重要事情是处理不同的代码片段,就好像它们位于不同的文件中一样,因此您可以确保以后可以轻松地将它们分开,原因就在于您引用的原因。因此,例如,不要在不同的部分之间引入依赖关系,以便以后很难解开它们。
答案 3 :(得分:3)
对于命令行脚本,除非每次调用都调用模块中的所有文件,否则很可能没有太大的区别,在这种情况下,由于需要打开n个文件,因此会有轻微的性能成本。
对于mod_python,由于字节编译模块在apache进程期间保持活动状态,因此很可能没有区别。
对于谷歌应用引擎虽然会有性能损失,除非该服务经常使用并且“热”,因为每次冷启动都需要打开所有文件。
答案 4 :(得分:2)
当然,您可以拥有任意数量的模块。
但现在让我们思考一下,当我们将每个小代码片段放入一个文件时会发生什么。
我们将在任何不太重要的模块中结束数百个import语句。当然,你也可以通过单独分隔文件来节省一点。但是猜猜:没有人能记住这么多模块名称,你最终可能会找到正确的文件...
我尝试将属于一起的东西放在一个文件中(除非它变得很大!)。但是当我的小函数或类不属于我的系统中的其他组件时,我有“util”模块等。我还尝试将这些分组,例如根据我的应用程序分层或通过其他方式分离它们。一个分离标准可以是:用于UI的实用程序和不用于UI的实用程序。
答案 5 :(得分:-1)
小。