Как s функция диапазона Python имеет параметр по умолчанию перед фактическим?

Итак, я пишу функцию, которая принимает необязательный список и расширяет его до указанной длины. Вместо того, чтобы писать это как foo (n, list = None), мне было интересно, как я могу имитировать поведение функции диапазона Python, которая работает следующим образом:

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5, 10)
[5, 6, 7, 8, 9]

То есть сначала с параметром по умолчанию. Для справки, попытка наивной настройки возвращает синтаксическую ошибку:

def foo(x=10, y):
    return x + y
SyntaxError: non-default argument follows default argument

Мне интересно, жестко ли это задано в диапазоне? Или это поведение можно эмулировать?

11
задан Chris Cooper 10 July 2011 в 23:57
поделиться