Python:应该选择多个小模块还是一个大模块?
我正在开发一个Python的网页应用,里面有一些小模块,各自负责特定的功能,比如 session.py
、logger.py
、database.py
等等。说这些模块小,真的是小;每个文件大概只有3到5行代码,最多也就10行。我每个文件里可能有几个导入和一两个类的定义。我在想,是不是应该把这些模块合并成一个,比如叫 misc.py
的文件?
我觉得分开写模块有助于代码的清晰度,而且如果将来这些模块的代码行数超过10行,我也不会觉得分开写有什么问题。但另一方面,感觉每个文件里只有几行代码,实在是太浪费了!另外,多个小文件和一个大文件在资源使用上有什么显著的区别吗?(当然,我现在还没到需要担心资源使用的地步,但我忍不住想问…)
我查了一下,看看之前有没有人问过这个问题,但没找到和Python相关的具体内容。如果这确实是个重复的问题,希望能指点我一下。
6 个回答
对于命令行脚本来说,通常不会有太大区别,除非每次调用都要打开模块中的所有文件,这样的话就会稍微影响性能,因为需要打开n个文件,而不是一个。
对于mod_python来说,通常也不会有区别,因为字节编译的模块会在apache进程运行期间一直保持活跃。
但是对于谷歌应用引擎来说,如果服务不是一直在使用,就会有性能损失,因为每次冷启动都需要打开所有文件。
作为模块的用户,我更喜欢通过一次导入就能包含整个模块。除非有特别的理由让用户可以导入不同的选项,否则不要让使用你包的用户进行多次导入。
顺便说一下,一个模块完全可以由多个源文件组成。最简单的做法是使用一个 __init__.py 文件,来把所有其他代码加载到模块的命名空间中。
我觉得把代码分成不同的模块可以让代码更清晰。如果将来这些模块的内容超过10行,我也不会觉得把它们分开有什么问题。
没错,继续保持你现在的做法。