Python 基于输入选择特定函数的最有效方法

Python 基于输入选择特定函数的最有效方法,python,Python,我有一个函数集合:func1,func2,func3。。。funcN。根据用户输入,仅使用1个函数,例如,如果用户输入“1”,则仅使用func1。到目前为止,我所做的是将这些函数放在一个分支中: class FunctionEnsembles: def __init__(self,select_funcion): self.function_to_select=select_function def function_to_use(self): i

我有一个函数集合:func1,func2,func3。。。funcN。根据用户输入,仅使用1个函数,例如,如果用户输入“1”,则仅使用func1。到目前为止,我所做的是将这些函数放在一个分支中:

class FunctionEnsembles:
    def __init__(self,select_funcion):
        self.function_to_select=select_function
    def function_to_use(self):
        if self.function_to_select=='1':
           func1...
        elif self.function_to_select=='2':
           func2...
        ...
显然这是没有效率的。当类被实例化时,例如
functionemploymentmyfunc('1')
,所有函数的定义都被涉及。如果调用myfunc.function_以_使用,它将遍历所有分支,这是不可取的。我想做的是: 实例化类
FunctionEnsemble
后,会选择函数,而不会触及不需要的函数


如何有效地做到这一点?非常感谢。

Python函数是一流的对象;您可以将它们放在列表中:

functions = [None, func1, func2, func3, ...]
functions[int(self.function_to_select)]()
或在字典中:

functions = {
    'selection1': func1,
    'selection2': func2,
    'selection3': func3,
}

functions[self.function_to_select]()

如果您的
函数\u to_select
变量实际上是序列中的一个数字,则列表非常有用。字典适用于任何其他可散列的内容(如字符串)。

谢谢,字典方法很有前途。但是我不认为我可以把这本字典放在uu init_uu(…)函数中。我猜我必须把这本字典放在函数_to_use(self)下。@Void:这些全局函数或绑定方法是在
self
上吗?@Void:对于全局函数,我也会将字典创建为全局函数。对于方法,我会在
\uuuu init\uuuu
中创建字典,这样我就可以访问
self
从中获取绑定的方法,然后将字典存储在
self
上。函数不是全局函数。我试着这样做:
def_uuuinit_uuuu(self,输入):funcdict={}funcdict['1']=func1 funcdict['2']=func2
def func1(self):blablablabla
,我偶然发现了这个错误:
全局名称'func1'未定义
@Void:如果函数是方法,那么您想存储
self.func1
,等等。