我有路由器根据用户输入决定调用哪个函数(使用ConfigParser
),然后尝试决定调用哪个函数。
def SomethingElse():
print 'hello'
def UploadDirectory():
print 'hi'
def router(config):
if config.has_option('job', 'Some_Task'):
taskName = config.get('job', 'Some_Task')
# taskName is now 'UploadDirectory'
###execute the UploadDirectory function
###execute something else if something else, etc
那么在python中编写这个的方法是什么?如果我预先建立了一个函数映射到字符串,我可以这样执行吗?
你会怎么写这个?
答案 0 :(得分:4)
是的,为函数名构建字符串映射是完全有效的:
task_map = {
'upload': UploadDirectory,
'something': SomethingElse,
}
执行as:
task_map[task_name]()
除此之外:尝试遵循蟒蛇风格指南PEP-8;它有助于使您的代码对所有其他Python程序员更具可读性。特别是在这种情况下,更喜欢underscore_separated
个函数名而不是LeadingCaps
。
答案 1 :(得分:0)
另一种执行此操作的方法是使用globals()
,如果您仅仅通过导入router
功能而无法运行:
globals()[taskName]()