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

0 投票
1 回答
693 浏览
提问于 2025-04-18 18:24

我有几行代码是把函数的结果添加到一个列表里。我想把这些代码改成一个循环,而不是一行一行地写赋值和添加操作。

到目前为止,我的代码看起来不错,但我在把字符串转换成函数调用时遇到了困难。我看过《口袋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部分就是函数调用)

我看过 从字符串调用模块中的函数 但我还是不明白这是否适用于我的情况

Python 2.7 razcrasp@gmail.com 谢谢

1 个回答

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())

撰写回答