Можно ли избежать дублирования равных arg-name и var-name при вызове метода?

#python #syntax #syntactic-sugar

#python #синтаксис #синтаксический-сахар

Вопрос:

Можно ли заменить

 veryLongOption = ...
...    
bar(arg1, arg2, veryLongOption = veryLongOption, anotherVeryLongOption = anotherVeryLongOption, more = more)
 

с помощью чего-то подобного?

 bar(arg1, arg2, =veryLongOption, =anotherVeryLongOption, =more)
 

Примечание: вопрос был прояснен, первый ответ был на первую форму вопроса.

Ответ №1:

Да, это, например:

 def bar(x, y, a, b, c):
    print(x, y, a, b, c)

arg1 = 1
arg2 = 2
def foo(*args):
    bar(arg1, arg2, *args)

foo(3,4,5)
 

Комментарии:

1. А если мне нужно передать, например, только два аргумента из трех или a,b,c это не foo-аргументы, а локальные переменные?

2. Во-первых, я не совсем понимаю, почему вы вообще недовольны bar(arg1, arg2, a = a, b = b, c = c) … И тогда мне очень непонятно, какова ваша конечная цель. Вы даете нам проблему XY здесь?

3. Я не доволен тем, как это выглядит с длинными именованными аргументами : foo(myVeryLongOption = myVeryLongOption, myOtherLongOption = myOtherLongOption) .

4. ОК. У меня было предположение, что есть простое решение, и я просто не могу его найти.