我在OOP方面没有经验,也不是贸易方面的程序员,所以我很抱歉如果这是我应该能够找到的东西。我目前有一个我编写的python程序来做一些复杂的数据分析 - 它由函数组成,然后是调用这些函数的脚本(没有主要的哨兵等)。没有课或任何东西。从另一个脚本调用一个脚本(使GUI包装进行分析)?
如果我可以在一个程序中打包分析,在另一个程序中进行数据可视化等等,然后从GUI调用我想要的程序,这将非常有帮助。因此,我试图编写一个简单的GUI(在Tkinter中),它允许我在运行该程序之前设置一些参数和文件路径等。
我习惯于其他“语言”,鼓励将程序的不同组件包装为互相通话的子程序。在python中,我的函数要么是真的很长(很多缩进,难以维护),或者我最终会有100万个互相调用的函数(很多函数很难跟踪)。
如果我试图在一个.py文件中执行此操作,它将会很长时间没有组织。为了节省时间和复杂性,我希望将GUI程序放在一个.py程序中,并根据需要让它的小部件调用其他程序(或从它们的函数)。我有一种感觉,这将涉及导入我的分析程序的功能,然后调用它们。我怎样才能做到这一点?我想调用的任何例程需要作为函数打包,然后以某种方式导入?
基本上我试图摆脱10级缩进。任何意见,将不胜感激。我也有兴趣以某种可部署的方式打包该程序,但这可能会远远高于我的薪酬等级。
了解更多关于[模块和包(https://docs.python.org/3/tutorial/modules.html),你必须找到一种在子文件夹+多个文件中构建代码的方法,以便于跟踪和维护。拥有单一文件的上帝代码不是一个解决方案。之后,我会创建一个包(或一个模块,取决于您的GUI)作为GUI回调的入口点,这就是,用您的所有代码创建一个大型库,GUI应该只导入一个子包它具有控制流量的具体功能。如果您的GUI必须维护一个状态,它会变得更加复杂。 –
启动单独程序(包括Python解释器)的典型方法是使用['subprocess'](https://docs.python.org/3/library/subprocess.html#module-subprocess)模块。如果您愿意,您可以在调用脚本中定义的自定义函数中将其调用包装。 – martineau