Как поступить с функцией?

Не знаю, что делать. То ли код переписывать, то ли костыли лепить. Есть куча функций. К примеру возьмем 3.

astatic23()
astatic27()
bstatic27()

По итогу некого списка [a, b, a,] нужно подставлять первый элемент списка a к static27(), для того чтобы исполнить функцию. Как это сделать?

list1 = [a, b, a,]
str(list[0]) + static() # Как это правильно сделать?

Как вообще поступать в таких случаях? Не получается полностью держать в голове весь замысел и периодически приходится выходить из ситауций.


Ответы (1 шт):

Автор решения: GrAnd

Один из вариантов - создать словарь с мапом ваших значений в функции. И потом вызывать их из этого словаря.

def astatic27(): print('astatic27')
def bstatic27(): print('bstatic27')

funcs_map = {'a': astatic27,
             'b': bstatic27}
           
lst = ['a', 'b', 'a']           

for el in lst:
    funcs_map[el]()

Вызовутся соответствующие функции.

astatic27
bstatic27
astatic27

Ещё можно собрать имя (как строку) и поискать функцию в атрибутах глобального/локального (или где ещё) пространства. Но это уже почти что хакинг.
Пример для глобальных функций:

for el in lst:
    globals()[el+'static27']()

Ещё как вариант, собирать имя функции и делать eval. Но так поступать вообще не советую.

→ Ссылка