В Python я понимаю, что аргументы по умолчанию приходят в конце и что аргументы, отличные от значения по умолчанию, не могут следовать аргументу по умолчанию. Это нормально. Как, например,:Порядок аргументов по умолчанию и не по умолчанию
>>> def foo(x=0, y):
return x, y
SyntaxError: non-default argument follows default argument
Это нормально, как ожидалось.
Однако, как насчет того, что первый аргумент должен быть по умолчанию? Как, например, как видно из приведенного выше кода, x
должен быть первым аргументом и должен иметь значение по умолчанию 0.
Возможно ли это сделать? Я спрашиваю, потому что даже в функции range
, я предполагаю, что это что-то вроде этого:
def range(start=0, end):
pass
Итак, как это делается, и если это не представляется возможным, как это реализуется range
? Обратите внимание, что я настаиваю на том, чтобы первый аргумент был по умолчанию, вот и вся цель. В качестве примера я использую range
, потому что он идеально подходит для моей проблемы. Конечно, можно было бы реализовать range
как def range(end, start=0)
, но это не главное.
Почти идентичный моему ответу, но яснее и на пять минут раньше. Итак, +1. –
Можете добавить аргумент 'step' для согласованности со встроенным. –
+1. Это идеально. Я чувствую себя глупо, не думая об этом. – user225312