从for循环[Python]中的字符串连接调用函数

时间:2014-08-25 02:53:23

标签: python function python-2.7 for-loop call

我有几行将函数的结果添加到列表中。我试图把它变成一个循环而不是连续的分配线并追加。

到目前为止,我有我想要的代码,我只是努力将实际的字符串转换为对函数的调用。我已经阅读了口袋python指南和各种其他python书籍,但我无法找到解决方案。

    categories = ['Hours', 'Travel', 'Site', 'Date']
    indexloc == 0
    for i in categories:  
        func = 'v'+categories[indexloc]+' = Get'+categories[indexloc]
        indexloc += 1

我得到的结果只是不确定如何将它们转换为函数调用:

>>> 
vHours = GetHours
vTravel = GetTravel
vSite = GetSite
vDate = GetDate
>>>

(只是为了澄清Get部分是函数调用)

我已经读过了 Calling a function of a module from a string with the function's name in Python 但我没有看到它是否适用于我的情况

Python 2.7 razcrasp@gmail.com 感谢

1 个答案:

答案 0 :(得分:2)

要调用函数,您需要对它进行一些引用。由于您知道函数的名称,因此可以从局部变量中获取它:

for category in categories:
    function = locals()['Get' + category]

    print 'v{} = {}'.format(category, function())

更好的方法是将类别名称映射到函数:

category_mapping = {
    'hours': GetHours,  # CamelCase is usually for classes, not functions
    'travel': GetTravel,
    ...
}

for category, function in category_mapping.items():
    print 'v{} = {}'.format(category.capitalize(), function())