Лучше обратиться к функциям напрямую:
functions_to_call = [sum_a, sum_c]
x = 9
for f in functions_to_call:
f(x)
Для вашей конкретной задачи getattr
ищет эти атрибуты в словаре, но вы хотите получить доступ к словарю, для которого выможно использовать operator.itemgetter
:
>>> from operator import itemgetter
>>> x = 10
>>> itemgetter("x")(globals())
10
Окончательная версия будет выглядеть так:
from operator import itemgetter
functions_to_call = ['sum_a', 'sum_c']
x = 9
for each_call in map(itemgetter, functions_to_call):
each_call(globals())(x)
В любом случае, вы не должны использовать globals
таким образом, этолучше иметь адресный словарь:
funcs = {
"sum_a" : sum_a,
"sum_c" : sum_c
}
functions_to_call = ['sum_a', 'sum_c']
x = 9
for each_call in functions_to_call:
funcs.get(each_call, lambda *_: print("Selected function do not exist"))(x)