我有几行将函数的结果添加到列表中。我试图把它变成一个循环而不是连续的分配线并追加。
到目前为止,我有我想要的代码,我只是努力将实际的字符串转换为对函数的调用。我已经阅读了口袋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 感谢
答案 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())