Python模块化最佳实践

Python模块化最佳实践,python,coding-style,modularity,Python,Coding Style,Modularity,我一直在为我的大型程序的设计在概念上苦苦挣扎。总体布局如下所示: def mainFunc(parm_1, parm_2, ..., parm_n): # do step 1 # do step 2 # ... # do step m 我的问题是:我应该让每一步都有自己的功能吗?我不想在mainFunc之外调用任何步骤作为函数。那么,或者,将每个步骤都变成一个片段会更好吗?调用一个函数和执行一个做同样事情的代码段之间的实际区别是什么?(当然,假设在代码段末尾删除了任何不需要的变

我一直在为我的大型程序的设计在概念上苦苦挣扎。总体布局如下所示:

def mainFunc(parm_1, parm_2, ..., parm_n):
  # do step 1
  # do step 2
  # ...
  # do step m
我的问题是:我应该让每一步都有自己的功能吗?我不想在mainFunc之外调用任何步骤作为函数。那么,或者,将每个步骤都变成一个片段会更好吗?调用一个函数和执行一个做同样事情的代码段之间的实际区别是什么?(当然,假设在代码段末尾删除了任何不需要的变量。)


从长远来看,我真的不知道哪种方法更好。如果您有任何建议,我们将不胜感激。

如果每个步骤本身都有意义,那么最好创建函数。通过这种方式,您可以记录每个函数的功能,也可以更容易地隔离bug。总之,我相信使用函数可以使代码更易于维护。

调用外部函数和将代码粘贴到位几乎没有什么区别,所以不要管它了。将代码分组为函数/方法的原因是为了使代码可重用(如果您需要重复几次该步骤,它肯定会被提取到函数中),并将巨大的代码块划分为许多较小的代码块-您需要决定您的
mainFunc
是否会很大,因为这是一个相当广泛的问题。在大多数情况下,这取决于你的需要。。。Python是OOP语言,所以也有类。。很多时候,我都会使用带有方法的class
class MyApp()
,然后运行
method,它调用类的方法。然后我将其用作
MyApp().run()
。。但它只是许多概念中的一个,你还应该考虑到其他人(这也是你在不看代码的3个月后)可能需要读取和维护你的代码。通过这种方式,可以更轻松地与docstring和函数进行通信,这些docstring和函数以可预测的格式接收输入,执行易于识别的操作,并以设置的格式提供输出。如果你有一个“无所不能”的巨大功能,那么这个功能就失去了。@roganjosh有很多优点。我开始用代码片段的方法来实现它,我自己也一直在迷失方向。我只能想象其他人正在对我的代码进行故障排除。当您第一次开始构建项目时,它也是一个很好的路线图。分解任务的组件(“读取文件”、“处理数据”、“在UI上显示”),并为每个仅通过
的任务创建占位符函数/类。然后,您可以开始逐个填充这些函数,并在继续下一部分之前验证每个组件是否按预期运行(或处理异常)。