Аргументы ключевых слов хороши, когда у вас длинные списки параметров без четко определенного порядка (которые вы не можете легко придумать, чтобы запомнить схему);однако во многих ситуациях их использование является излишним или делает программу менее понятной.
Во-первых, иногда гораздо проще запомнить порядок ключевых слов, чем имена аргументов ключевых слов, и указание имен аргументов может сделатьэто менее понятно.Возьмите randint
из scipy.random
со следующей строкой документации:
randint(low, high=None, size=None)
Return random integers x such that low <= x < high.
If high is None, then 0 <= x < low.
Когда вы хотите сгенерировать случайное целое число из [0,10), его нагляднее будет написать randint(10)
, чем randint(low=10)
на мой взгляд.Если вам нужно сгенерировать массив из 100 чисел в [0,10), вы, возможно, запомните порядок аргументов и напишите randint(0, 10, 100)
.Однако вы можете не помнить имена переменных (например, первый параметр low, lower, start, min, минимум), и как только вам придется искать имена параметров, вы также можете не использовать их (как вы только что искалиправильный порядок).
Также рассмотрим функции с переменными числами (с переменным числом параметров, которые сами являются анонимными).Например, вы можете написать что-то вроде:
def square_sum(*params):
sq_sum = 0
for p in params:
sq_sum += p*p
return sq_sum
, к которому может быть применено несколько параметров (square_sum(1,2,3,4,5) # gives 55
).Конечно, вы могли бы написать функцию, чтобы взять итерируемое ключевое слово с именем итерация def square_sum(params):
и назвать его как square_sum([1,2,3,4,5])
, но это может быть менее интуитивно, особенно когда нет никакой путаницы в отношении имени аргумента или его содержимого.