Получение имени при объявляемой переменной
Я хочу передать имена переменных функции чтобы она возвращала необходимый кортеж значений зависящий от имен переменных, пример:
a, b, c = something() # (1, 'b', True)
Как я могу реализовать подобное поведение ?
Доп.:
В голове я представляю себе такую программу:
def something(*args_names):
res = []
for chr in args_names:
if chr=='a': res.append(1)
elif chr=='b': res.append('b')
elif chr=='c': res.append(True)
. . .
return tuple(res)
Ответы (2 шт):
Насколько мне известно, у Вас никак не получится так сделать. Это связанно с тем, что вашей функции никак не получить данные о том, в какие переменные она будет распакована. И это вполне логично, ведь функция не должна знать о том, что происходит извне(это нарушает принципы построения программы). Ваш код не должен строится на том, как названы переменные. Вам стоит продумать архитектуру программы получше.
с трудом представляю для чего это может быть нужно, но попробуйте сделать так:
def something(*args_names):
res = []
for i in args_names:
if i is a: res.append(1)
elif i is b: res.append('b')
elif i is c: res.append(True)
else: res.append('error')
return tuple(res)
a,b,c,d = 1,2,3,4
something(a,b,c,d) # (1, 'b', True, 'error')