Канонический (start, stop) в параметрах Python

Есть ли элегантный способ указать параметр, который инкапсулировал бы начало и конец среза как slice, но не содержал бы шага? Сейчас я использую объявление как в модуле bisect, но я хотел бы что-то более лаконичное и не разделять lo и hi:

def find_left_lt(a, x, lo=0, hi=None, key=None):

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Оформить в виде кортежа. Например:

def find_left_lt(a, x, slice=(0, None), key=None):
    ...


... = find_left_lt(a, x)
... = find_left_lt(a, x, slice=(42, None))
... = find_left_lt(a, x, slice=(42, 142))

Или опускать второе значение полностью:

def find_left_lt(a, x, slice=(0, ), key=None):
    ...


... = find_left_lt(a, x)
... = find_left_lt(a, x, slice=(42, ))
... = find_left_lt(a, x, slice=(42, 142))

Или допускать в качестве slice и числа и кортежи:

def find_left_lt(a, x, slice=0, key=None):
    ...


... = find_left_lt(a, x)
... = find_left_lt(a, x, slice=42)
... = find_left_lt(a, x, slice=(42, 142))
→ Ссылка