Как в качестве названия именного параметра в функцию передать значение переменной?
Есть некая функция, допустим:
def func(name = "1")
Я хочу в качестве названия именного параметра name передать значение переменной, то есть вместо
def func(name = "1")
вызвать функцию так:
name_1 = "2"
def func(name_1 = "1")
Первое что пришло на ум, сделать вот так:
name_1 = "2"
def func(f"{name_1}" = "1")
Но увы не сработало - ошибка синтаксиса, может кто подскажет как это сделать и возможно ли вообще?=)
P.S. Так как многие не понимаю зачем это нужно поясню исходя из исходной задачи:
- Есть функция
def func1(id_d, name = {name1: id_1}):
def func2 (id_d, name1= 1, name2 = 2)
Можно ли вызывать функцию func2 без генерации дополнительного словаря, т.к. в момент вызова func1 мы точно знаем с каким аргументом name мы вызываем функцию func1 и по сути значит знаем с каким аргументом мы должны вызвать функцию func2, ну то есть, если передали бы так:
def func2 (id_d, name1= 1, name2 = 2)
функция func2 вызвалась бы с аргументом name2 Если сделать так:
key, val = list(name.items())[0]
params = {key:val}
def func2 (id_d, **params)
Оно отработает, но вопрос был в другом - можно ли как то управлять названием именного параметра при вызове функции?
Ответы (1 шт):
Суть вопроса не очень понятна, но можно передавать в функцию, например, словарь:
def func(d):
for k in d:
print(k, d[k])
name_1 = 'name1'
val_1 = 'val1'
name_2 = 'бим'
val_2 = 'бом'
func({name_1: val_1, name_2: val_2})
Вывод:
name1 val1
бим бом
Внутри функции вы сможете перебрать все переданные в словаре пары ключ-значение. Можно считать в данном случае ключ в словаре названием переменной, а соответствующее значение - значением этой переменной.