提问人:Adam Shohe 提问时间:11/11/2023 最后编辑:Adam Shohe 更新时间:11/11/2023 访问量:45
从列表中调用函数会使列表变为空 [已关闭]
Calling a function from a list makes the list go empty [closed]
问:
我正在制作一个程序作为学校项目,我想通过允许用户在任何页面中输入特定数字来使其返回页面,使其感觉像一个网页。
我使用堆栈实现了它(我不确定它是否重要,但我没有为它设置元素的最大限制,因为设置一个没有意义)。以下是我想关注的代码的一小部分:
currentPage=[] #page stack
def goTo(page):
currentPage.append(page)
def goBack(): #redundant for now
global currentPage
print(currentPage)
del currentPage[-1]
def mainMenu():
print("1. Order item\n2. Admin login\n3. Quit\n")
global currentPage
print(currentPage) #14
choice=int(input("Please enter your choice: "))
if choice==1:
goTo(order())
elif choice==2:
goTo(adminMenu())
elif choice==3:
goBack()
goTo(mainMenu())
while True:
if len(currentPage)==0:
print("Thank you for using our program! <3")
break
currentPage[-1]()
[已编辑]:我希望打印第 14 行中的打印件,但它会打印。[mainMenu()]
[]
似乎从列表中调用函数会使列表由于某种原因变为空。您能为此提出任何解决方法吗?
答:
0赞
aazizzailani
11/11/2023
#1
要解决此问题,请避免在将函数添加到列表时执行这些函数。而不是 ,用于存储函数本身。这样可以防止列表因函数执行而变为空。currentPage
goTo(mainMenu())
goTo(mainMenu)
通过存储函数而不在函数中执行它们,您可以维护功能而不会遇到空列表的问题。goTo
评论
del currentPage[-1]
mainMenu()
goTo()
goTo(mainMenu)