我是Python新手,使用Anaconda(编辑器:Spyder)编写了一些简单的函数。我创建了20个函数的集合,并将它们保存在单独的.py
文件中(文件名与函数名相同)。你知道吗
例如
def func1(X)
Y=...
return Y
我还有另一个函数,它将函数名作为字符串(这20个函数之一)作为输入,调用它,进行一些计算并返回输出。你知道吗
def Main(String,X)
Z=...
W=String(Z)
V=...
return V
如何根据字符串输入选择函数?你知道吗
更多详细信息: 主函数计算给定函数的Sobol指数。我写了主函数。我的同事编写自己的函数(每个函数可能有500多行代码),只想使用Main来获取Sobol索引。我会把Main给其他人,所以我不知道将来Main作为一个函数会得到什么。我也不希望Main的用户经历编字典的麻烦。你知道吗
您只需要一个函数字典,如下所示:
请注意,如果需要,可以为同一个函数使用多个键,只要用户输入正确的键,名称就不需要与函数完全匹配。你知道吗
然后你可以这样调用这个函数:
尽管我建议在用户输入有效密钥失败时捕捉错误。你知道吗
函数是Python中的对象。这意味着您可以将它们存储在词典中。一种方法是通过将要调用的名称存储为键,将函数存储为值来分派函数调用。你知道吗
例如:
现在可以使用^{} 之类的工具更自动地生成分派表,但是在这种情况下可能有更好的设计(也许可以考虑重新组织导入)。你知道吗
EDIT花了我一分钟的时间对此进行了全面测试,因为我必须设置一些文件,如果您有许多名称要导入,并且不想在字典中手动指定每个名称,则可以执行类似的操作:
注意,这假设函数名和模块名是相同的。它使用importlib从
func_names
中提供的字符串导入模块名。你知道吗相关问题 更多 >
编程相关推荐