在for循环中从字符串连接调用函数 [Python]
我有几行代码是把函数的结果添加到一个列表里。我想把这些代码改成一个循环,而不是一行一行地写赋值和添加操作。
到目前为止,我的代码看起来不错,但我在把字符串转换成函数调用时遇到了困难。我看过《口袋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())