Как в качестве названия именного параметра в функцию передать значение переменной?

Есть некая функция, допустим: 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. Так как многие не понимаю зачем это нужно поясню исходя из исходной задачи:

  1. Есть функция
 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 шт):

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

Суть вопроса не очень понятна, но можно передавать в функцию, например, словарь:

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
бим бом

Внутри функции вы сможете перебрать все переданные в словаре пары ключ-значение. Можно считать в данном случае ключ в словаре названием переменной, а соответствующее значение - значением этой переменной.

→ Ссылка