从列表中调用函数会使列表变空

问题描述 投票:0回答:1

我正在制作一个程序作为一个学校项目,我希望通过允许用户在任何页面中输入特定的数字来使其返回页面,从而使其感觉像一个网页。

我使用堆栈实现了它(我不太确定它是否重要,但我没有为其设置元素的最大限制,因为设置一个没有意义)。这是我想要重点关注的代码的一小部分:

currentPage=[] #page stack

def goTo(page):
    currentPage.append(page)

def goBack(): #redundant for now
    global currentPage
    print(currentPage) #line 8
    del currentPage[-1]

def mainMenu():
    print("1. Order item\n2. Admin login\n3. Quit\n")
    global currentPage
    print(currentPage)
    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]()

我希望第 8 行中的 print 能够打印

[mainMenu()]
,但它却打印出
[]

似乎从列表中调用函数会使列表由于某种原因变空。您能建议任何解决方法吗?

python stack
1个回答
0
投票

要解决此问题,请避免在将函数添加到

currentPage
列表时执行这些函数。使用
goTo(mainMenu())
代替
goTo(mainMenu)
来存储函数本身。这可以防止列表因函数执行而变空。

通过存储函数而不在

goTo
函数中执行它们,您可以维护功能而不会遇到空列表的问题。

© www.soinside.com 2019 - 2024. All rights reserved.