1

Приносим извинения, если этот вопрос уже задан/ответил, я бы предположил, что это так, но не удалось найти связанные вопросы ...Использование именованных аргументов с неидентифицированными аргументами переменной длины в Python

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

def my_function(arg1, arg2, arg3=None, *other_args): 
    pass 

возможно ли это в Python 2.x?
Может ли функция принимать именованные аргументы в дополнение к списку аргументов переменной длины?

Я считаю, что ответ «нет», то в этом случае я имею в виду единственное решение, мне было бы что-то похожее на следующее:

def my_function(arg1, arg2, **kwargs): 
    arg3 = kwargs["arg3"] 
    other_args = kwargs["other_args"] 

Является ли это правильно?

ответ

1

Этот синтаксис, безусловно, действителен, но, я думаю, вы имеете в виду, что вы можете написать подпись функции таким образом, что arg3 связан только в том случае, если он используется как именованный параметр (например, my_function(1, 2, arg3 = 3)), и в противном случае все аргументы, прошедшие первые два, пойманный *other_args, и в этом случае ответ отрицательный. Необязательные аргументы могут быть заданы путем именования, но они также позиционируются как обычные аргументы и заполняются, если доступны достаточные параметры, прежде чем прибегать к ловушкам вроде *args или **kwargs.

Я бы, вероятно, написал его точно так же, как вы, используя аргументы ключевого слова

 Смежные вопросы

  • Нет связанных вопросов^_^