我如何使用用户输入来调用Python中的函数?

这个问题在这里已经有了答案:

  • 通过使用其名称(字符串)调用模块的功能10个答案
  • 使用Python脚本中的命令创建一个原始输入1答案

  • 错误是因为函数名称不是字符串,你不能调用像'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?