Списки переменных и функций

Допустим, что у меня есть список переменных:

var_list = [ alpha, beta, delta ]

А также список функций:

func_list = [ some_func(), another_func(), one_more_func() ]

Как написать код, который будет брать переменную из первого списка и давать значение соответствующей функции из второго списка? Чтобы это не выглядело так:

alpha = some_func()
beta = another_func()
delta = one_more_func()

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

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

var_list = [ alpha, beta, delta ]

В питоне нельзя присвоить значение значению переменной

func_list = [ some_func(), another_func(), one_more_func() ]

Там вы создаете список не из функций, а результатов выполнения фукций!

Пусть будет так:

var_list = [ 'alpha', 'beta', 'delta' ]
func_list = [ 'some_func', 'another_func', 'one_more_func' ]
for v in var_list:
   exec(v+'='+func_list[var_list.index[v]]+'()')

А вообще это надо в словарь оборачивать:

key_list = ['alpha', 'beta', 'delta']
func_list = [some_func, another_func, one_more_func]
var_data = {}
for i in range(len(key_list)):
    var_data[key_list[i]] = func_list[i]()

print(var_data['beta'])
→ Ссылка
Автор решения: CrazyElf

Ну, если переменные нужны глобальные, то как-то так:

var_list = [ 'alpha', 'beta', 'delta' ]
func_list = [ some_func(), another_func(), one_more_func() ]

for v,f in zip(var_list, func_list):
   globals()[v] = f

Без кавычек в первом списке ничего не выйдет, потому что в списке тогда будут значения, содержащиеся в этих переменных, и не будет никакой возможности этим переменным что-то обратно присвоить.

А в списке с функциями будут результаты выполнения функций, так как вы их вызываете. Но в вашем случае, я так понимаю, это несущественно - вызовутся функции сразу или в момент присвоения значений переменным.

→ Ссылка