0

我开始学习Python。现在我正在创建一个允许创建、查看或删除存储在 SQLite 3 DB 中的联系人的 CLI。问题是每次我完成一项任务时,我都会再次调用 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 方法?

4

3 回答 3

1

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

您可以做很多事情来执行无限程序,但对于 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()

于 2021-03-31T18:49:44.960 回答
-1

您可以使用getoptargparse等参数库

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

$ python3 ./script.py -123

于 2021-03-31T19:32:26.203 回答
-2
在 python 中,没有“主函数”“主方法”之类的东西。如果您愿意,您可以阅读有关构造函数调用操作等的信息。所以,如果我理解正确 - 您想要递归调用“main”方法。

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

<some code here>
if count == <your number>:
    return
else:
    count += 5
self.main(count)
于 2021-03-31T18:44:07.093 回答