递归的替代方法?

问题描述

我开始学习 Python。现在我正在创建一个 CLI,它允许创建、查看或删除存储在 sqlite 3 DB 中的联系人。问题是,每次我完成一项任务时,我都会再次调用 main 函数,以便用户可以做其他事情。代码如下所示:

using Conda
Conda.runconda(`install scikit-learn --force-reinstall --yes`)

我很确定连续调用一个函数会降低它的性能,而且我认为调用递归函数次数是有限制的,那么我应该如何再次调用 main 方法

解决方法

您对递归调用是正确的。它们可以很好,但迭代通常比递归更好。

要进行无限编程,您可以做很多事情,但对于 cli,最简单的方法是将所有函数放入一个循环中。

这有点难看,但这应该可以工作,而不必每次都调用 main()。

def main(self):
    again=True
    while again:
        print("What operation would you like to perform: Quit(0) Display contacts (1),add a new one (2),or remove one  (3)?")
        option = int(input())
        if option == 0:
            again=False
        if option == 1:
            self.display()
            self.main()
        elif option == 2:
            self.new()
            self.main()
        elif option == 3:
            self.delete()
            self.main()
        else:
            print("Please introduce a valid option")

话虽如此,你仍然需要调用 main()

,

您可以使用 getoptargparse 等参数库

这里的主要目标是管理循环内的选项并一次调用它。例如:

$ python3 ./script.py -123

, 在python中没有“main函数”“main方法”这样的东西。 如果您愿意,您可以阅读有关 constructorscall operations 等的信息。 所以,如果我理解正确的话——你想递归调用“main”方法。

您可以像这样计算此方法中的出现次数: def main(self,count= <your number>): 在此之后,如果您想调用此递归,请创建循环或仅求和“计数”:

<some code here>
if count == <your number>:
    return
else:
    count += 5
self.main(count)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...