Python 局部变量';菜单操作';分配前参考
无论我如何试图修复它,我总是会遇到这个错误。我已经在我制作的另一个脚本中使用了这个方法,它工作得很好,但由于某种原因,它不能与这个脚本一起工作。我们的想法是返回到第一个菜单,选择2号。请注意,我确实查看了其他相关帖子,但它们根本帮不了我Python 局部变量';菜单操作';分配前参考,python,Python,无论我如何试图修复它,我总是会遇到这个错误。我已经在我制作的另一个脚本中使用了这个方法,它工作得很好,但由于某种原因,它不能与这个脚本一起工作。我们的想法是返回到第一个菜单,选择2号。请注意,我确实查看了其他相关帖子,但它们根本帮不了我 import os import sys def menu(): print """ this is a test menu """ menu() def back(): menu_actions['menu']() men
import os
import sys
def menu():
print """
this is a test menu
"""
menu()
def back():
menu_actions['menu']()
menu_actions = {
'menu': menu,
'2': back,
}
choice = raw_input(">>")
if choice == '2':
back()
试试这个:
#!/usr/bin/env python
def menu():
print """
this is a test menu
"""
def back():
menu_actions['menu']()
if __name__ == '__main__':
menu_actions = {
'menu': menu,
'2': back,
}
menu()
while True:
choice = raw_input(">>")
if choice == '2':
back()
正如@John Anderson和我在评论中所解释的,菜单动作字典在定义之前就被引用了,这就是为什么你会遇到这个错误
一旦将其移出back
功能的范围,它将正常工作。虽然如果您希望程序在返回主菜单后继续运行,那么整个程序需要在无限循环中运行,并且只有在需要时才会终止。当程序变得更复杂时,您也可以在其他时间向错误添加额外的错误处理
希望这有助于解决您的问题。在方法
back()
中使用后,您的菜单\u操作将显示分配。可能菜单\u actions=
不应位于back()
方法内,即不应缩进。请尝试将菜单\u actions
字典移到back
函数范围之外(即,在定义选项之前的back
函数下方。该函数起作用,但不允许我再次选择选项。它会循环然后退出脚本。哦,我没有意识到这是您试图完成的。在这种情况下,您可能需要一个while循环,以便程序继续循环,直到您完成为止control-c
或故意退出。这听起来像是你想要完成的事情的准确答案吗?是的。我会试试看