как пропустить аргумент в python при вызове метода

Я вызываю метод в python. метод определен здесь :

boto.emr.step.StreamingStep(name, mapper, reducer=None, combiner=None, action_on_failure='TERMINATE_JOB_FLOW', cache_files=None, cache_archives=None, step_args=None, input=None, output=None, jar='/home/hadoop/contrib/streaming/hadoop-streaming.jar') 

Я знаю, что аргументы после отображения имеют значение по умолчанию, поэтому мне не нужно указывать их значение. Но что, если я хочу передать значение только для одного аргумента в самом конце? Должен ли я передать все аргументы перед этим?

Например, я хочу вызвать этот метод, дающий значение имени, mapper и combiner, и просто использую значение по умолчанию для редуктора. Должен ли я это делать?

 boto.emr.step.StreamingStep('a name', 'mapper name', None, 'combiner name') 

Есть ли более простой способ сделать это? причина, если есть 100 аргументов, и я просто хочу передать значение для самого последнего аргумента, тогда мне нужно передать ему множество значений по умолчанию.

Надеюсь, я достаточно четко изложу свой вопрос …

Есть два способа сделать это. Первым, самым простым, является передача именованного аргумента:

 boto.emr.step.StreamingStep(name='a name', mapper='mapper name', combiner='combiner name') 

(Обратите внимание, что name и mapper были в порядке, указав имя аргумента не требуется)


Кроме того, вы можете передать словарь с распаковкой ** аргументов :

 kwargs = {'name': 'a name', 'mapper': 'mapper name', 'combiner': 'combiner name'} boto.emr.step.StreamingStep(**kwargs) 

Просто передайте аргументы по ключевому слову: boto.emr.step.StreamingStep(name='a name', mapper='a mapper', combiner='a combiner')

  1. Не используйте позиционные аргументы, вместо этого используйте аргументы ключевых слов.

  2. Если необходимо использовать позиционные аргументы, используйте список * args, заполните его значениями по умолчанию, используя цикл или что-то еще, и установите последний аргумент, затем передайте его методу.