2016-06-25 3 views
1

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

numbers= [1,2,3,4,5] 

def someMath(lst, divideBy = len(lst)): 
    return sum(lst)/divideBy 

В этом примере я хотел бы значение возврата по умолчанию функции будет сумма списка передается чисел, деленная на длину списка.

someMath(numbers) # returns 3 

Однако я все еще хочу возможность изменить то, что значение DIVIDEBY является:

someMath(numbers, divideBy=5) # returns 5 

Возможно ли это и как?

+0

Угу определенно дубликата – RSHAP

+0

«Динамические аргументы по умолчанию в функции питона» отвечает на мой вопрос точно – RSHAP

ответ

1

Я думаю, что программисты способ Python обычно пишут это сделать следующее:

def someMath(lst, divideBy=None): 
    if divideBy is None: 
     return sum(lst)/len(lst) 
    return sum(lst)/divideBy 
+0

спасибо это имеет смысл - мой у фактической программы есть еще несколько аргументов для работы, поэтому мне интересно, можно ли обойтись без написания '' '' if not kwarg: '' 'для каждого ... но, возможно, это просто не – RSHAP

+0

Ну, в верхней части моя голова вы могли бы сделать что-то более сложное с помощью 'filter (bool ...' и строковых значений ваших аргументов, но это было бы менее понятным, чем просто тестирование по одному, были ли значения sup sup или нет. – erewok

+0

да нет, вы правы, в этом нет необходимости. Ваш ответ - правильный ответ. будет отмечаться, как только это позволит мне – RSHAP

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