首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过输入字符串引用Python函数

通过输入字符串引用Python函数
EN

Stack Overflow用户
提问于 2019-06-03 00:01:49
回答 1查看 34关注 0票数 1

我有一个Python模块,其中有几个函数,它应该根据用户输入调用不同的函数。例如,在我的代码中,我有如下内容:

代码语言:javascript
复制
if val == "X":
    return foo.X(self)
elif val == "Y":
    return foo.Y(self)
elif val == "Z":
    return foo.Z(self)
else:
    sys.exit("ERROR: value %s DNE"%(val))

有没有一种方法可以直接根据输入调用foo模块中的python函数,而不需要多个if语句?

EN

回答 1

Stack Overflow用户

发布于 2019-06-03 00:26:26

您可以使用常用的Python方法来避免在其他语言中使用的switch语句:字典。函数是对象,所以函数可以是字典中的值。

代码语言:javascript
复制
function_dict = {'X': foo.X, 'Y': foo:Y, 'Z': foo.Z}
return function_dict[val](self)

如果val不是字典中的关键字之一,则会引发错误。如果您不想要那个特定的错误,有几种方法可以引发另一个错误或完全避免错误。例如,如果键不在字典中,则可以使用字典的get方法来使用默认值。例如,如果希望为X, Y, Z以外的任何键调用foo.other方法,则可以使用

代码语言:javascript
复制
function_dict = {'X': foo.X, 'Y': foo:Y, 'Z': foo.Z}
return function_dict.get(val, other)(self)

您还可以在使用字典之前检查val是否为键之一,如下所示

代码语言:javascript
复制
function_dict = {'X': foo.X, 'Y': foo:Y, 'Z': foo.Z}
if val not in function_dict:
    sys.exit("ERROR: value %s DNE"%(val))
return function_dict[val](self)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56416675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档