我如何使用用户输入来调用Python中的函数?
这个问题在这里已经有了答案:
错误是因为函数名称不是字符串,你不能调用像'func1'()
函数它应该func1()
,
你可以这样做:
{
'func1': func1,
'func2': func2,
'func3': func3,
}.get(choice)()
它通过将字符串映射到函数引用
方面说明 :你可以编写一个默认的函数,如:
def notAfun():
print "not a valid function name"
并改善你的代码,如:
{
'func1': func1,
'func2': func2,
'func3': func3,
}.get(choice, notAfun)()
如果你制作一个更复杂的程序,使用Python标准库中的cmd模块比写一些东西更简单。
你的例子会看起来如此:
import cmd
class example(cmd.Cmd):
prompt = '<input> '
def do_func1(self, arg):
print 'func1 - call'
def do_func2(self, arg):
print 'func2 - call'
def do_func3(self, arg):
print 'func3 - call'
example().cmdloop()
一个示例会话将是:
<input> func1
func1 - call
<input> func2
func2 - call
<input> func3
func3 - call
<input> func
*** Unknown syntax: func
<input> help
Undocumented commands:
======================
func1 func2 func3 help
当你使用这个模块时,当用户输入没有do_
的名字时,每个名为do_*
函数都会被调用。 还会自动生成一个帮助,您可以将参数传递给函数。
有关此手册(此处)的更多信息,或有关示例的手册的Python 3版本(此处)。
你可以使用locals
>>> def func1():
... print 'func1 - call'
...
>>> def func2():
... print 'func2 - call'
...
>>> def func3():
... print 'func3 - call'
...
>>> choice = raw_input()
func1
>>> locals()[choice]()
func1 - call
链接地址: http://www.djcxy.com/p/55163.html
上一篇: How do I use user input to invoke a function in Python?
下一篇: How to invoke an function on an object dynamically by name?