我是Python新手。我最近了解到,没有用于python的开关柜系统。相反,程序员必须使用字典数据类型编写一个。
我想使用开关盒制作菜单系统,代码如下所示:
switch={'1':func1(),'2':func2()} #func1() and func2() are two separate functions (menu options)
choice= input('choice : ')
switch[choice]
嗯,在我的交换系统中,无论我输入什么作为'choice',func1()仅运行。
任何帮助将不胜感激:)
根据您的代码,看起来func1和func2都将在每次代码运行时运行。问题是,当您声明字典时,您正在执行/调用函数(因为在函数名后有()
,这是“调用”函数的方式),而不是仅存储指向的链接/引用。他们。
为了传递/存储对函数的引用而不调用它,只需键入其名称,最后不带()
。然后,要调用在变量/某处引用的函数,请添加括号。
这应该起作用:
switch = {'1': func1, '2': func2} # func1() and func2() are two separate functions (menu options)
choice = input('choice : ')
switch[choice]()
请注意我如何从第一行的功能中删除()
。还请注意,在最后一行,我通过使用键switch
调用存储在choice
中的函数,方法是在末尾添加()
。
而不是将func1()
放入字典中,请尝试将func1
放入(无括号)。
>>> switch = {'1' : func1, # No parentheses here
... '2' : func2 } # ...or here.
>>> choice = input('choice : ')
>>> switch[choice]() # But do put parentheses here.
通过将func1()
放入字典中,实际上是在调用该函数并将其结果存储在字典中。相反,如果您想通过字典来调用该函数,则需要存储函数handle(其变量名)并在索引到switch
后调用它。