Многозначительное многоточие в Python
Не самая известная штука в Python — многоточие:
class Flyer:
def fly(self):
...
Это рабочий код. В питоне ...
(он же Ellipsis
) — реальный объект, который можно использовать в коде.
Ellipsis
— единственный экземпляр типа EllipsisType
(аналогично тому, как None
— единственный экземпляр типа NoneType
):
>>> ... is Ellipsis
>>> True
>>> Ellipsis is ...
>>> True
Авторы Python в основном используют ...
, чтобы показать, что у типа, метода или функции отсутствует реализация — как в примере с fly()
.
И в тайп-хинтах:
It is possible to declare the return type of a callable without specifying the call signature by substituting a literal ellipsis for the list of arguments in the type hint:
Callable[..., ReturnType]
To specify a variable-length tuple of homogeneous type, use literal ellipsis, e.g.
Tuple[int, ...]
. A plainTuple
is equivalent toTuple[Any, ...]
, and in turn to tuple.
# numbers - кортеж целых чисел произвольной длины
# summator - функция, которая принимает любые аргументы,
# а возвращает целое число
def print_sum(numbers: tuple[int, ...], summator: Callable[..., int]):
total = summator(numbers)
print(total)
print_sum((1, 2, 3), sum)
# 6
Ну, а обычные разработчики... Кто во что горазд ツ
★ Подписывайтесь на новые заметки.