Python 递归的替代方案?

Python 递归的替代方案?,python,python-3.x,infinite-recursion,Python,Python 3.x,Infinite Recursion,我开始学习Python了。现在我正在创建一个CLI,它允许创建、查看或删除存储在SQLite 3DB中的联系人。问题是,每次我完成一项任务时,我都会再次调用main函数,以便用户可以做其他事情。代码如下所示: def main(self): print("What operation would you like to perform: Display contacts (1), add a new one (2), or remove one (3)?")

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

def main(self):
    print("What operation would you like to perform: Display contacts (1), add a new one (2), or remove one  (3)?")
    option = int(input())
    try:
        if option == 1:
            self.display()
            self.main()
        elif option == 2:
            self.new()
            self.main()
        elif option == 3:
            self.delete()
            self.main()
    except TypeError:
        print("Please introduce a valid option")
        sys.exit()

我很确定函数的连续调用会降低其性能,我认为递归函数的调用次数是有限制的,所以我应该如何再次调用main方法?

在python中,没有“main function”“main method”之类的东西。 如果你愿意的话,你可以读到,等等。 所以,如果我理解正确的话,您希望递归调用“main”方法。
您可以按如下方式计算此方法中的出现次数:
def main(self,count=):
在此之后,如果要调用此递归,请创建循环或仅求和“count”:


如果计数==:
返回
其他:
计数+=5
自主(计数)

关于递归调用,您是对的。它们可能很好,但迭代通常比递归好

要实现无限编程,您可以做很多事情,但对于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()

您可以使用参数库,如或

这里的主要目标是管理循环中的选项并一次调用所有选项。例:


$python3./script.py-123

使用循环重复
main
的所有内容,而
option==1
您的
except
子句将永远不会被命中。您是否希望
选项=int(input())
行位于
try
内?你知道,你真的不需要承担例外的费用。如果option='1':则可以说
并跳过到整数的转换。
continue
是一个关键字,不能用作变量名或表达式。
continue=True
是语法错误,
continue
是一个关键字耶,忘了这一点。要编辑。你的代码中仍然有
continue
关键字,在
continue=False
我没有投反对票,但听起来OP的要求正好相反,即在这里如何不使用递归