Опубликован: 16.12.2023 60
Многоточие ( ... ) - это специальный объект Python под названием Ellipsis, который можно вызвать, если ввести три точки (...
) или Ellipsis
.
Ellipsis является так называемым "синтаксическим сахаром" , предоставляющим программисту альтернативный способ записи уже имеющихся синтаксических конструкций, но более удобным, кратким способом.
Ellipsis имеет многоцелевой характер применения: от простого заполнителя кода до инструмента в продвинутых сценариях программирования.
При разработке пользовательских функций или классов многоточие ( ...
) можно использовать как заполнитель еще ненаписанного кода. Это особенно полезно при разработке модулей или структур классов, где сначала нужно обозначить структуру модуля или класса, а детали реализации будут добавлены позже.
Например, Ellipsis можно использовать в качестве заполнителя для функции или класса (указав многоточие ...
или вызвав сам объект Ellipsis, что фактически тождественно оператору pass
).
from typing import TypeVar, Iterator, Generic
T = TypeVar('T')
class MyIter( Iterator[T], Generic[T] ):
...
class Tree:
...
def leaves(self) -> List['Tree']:
...
# альтернативный способ
def another_function():
pass
Многоточие ( ...
) используется в библиотеках, таких как NumPy, для краткого и эффективного разбиения многомерных массивов.
Например, если трехмерный массив и необходимо разделить на части, то это можно сделать как минимум тремя способами:
import numpy as np
arr = np.random.rand(2, 3, 2)
print(arr)
[[[0.41799145 0.04858386]
[0.55427106 0.76501715]
[0.65110561 0.91901972]]
[[0.07514992 0.35822602]
[0.48512622 0.31399117]
[0.39262452 0.03085063]]]
# традиционный способ
print( arr[ :, :, 1] )
[[0.04858386 0.76501715 0.91901972]
[0.35822602 0.31399117 0.03085063]]
# слайсинг с использованием многоточия ( ... )
print( arr[ ... , 1] )
[[0.04858386 0.76501715 0.91901972]
[0.35822602 0.31399117 0.03085063]]
# слайсинг с использованием объекта Ellipsis
print( arr[ Ellipsis , 1] )
[[0.04858386 0.76501715 0.91901972]
[0.35822602 0.31399117 0.03085063]]
Использование Ellipsis (многоточие ...
) является наиболее экономичным способом разделения многомерного массива, так как требует наименьшего набора кода.
Аннотации типов, введенные в Python версии 3.5. (PEP 484), используют многоточие ( ...
) для указания произвольных типов аргументов в вызываемых объектах.
Фреймворки, ожидающие функций обратного вызова определенных сигнатур, могут иметь аннотацию типа, используя Callable[[Arg1Type, Arg2Type], ReturnType]
.
В такой аннотации можно объявить возвращаемый тип вызываемого объекта без указания сигнатуры вызова, заменив список аргументов многоточием ...
(тремя точками):
from typing import Callable
# Функция с произвольными аргументами, возвращающая значение int
FuncType = Callable[..., int]
def partial(func: Callable[..., int], *args) -> Callable[..., int]:
# тело функции
Обратите внимание, что вокруг многоточия нет квадратных скобок.
Таким образом, Ellipsis - это многоцелевой специальный объект, использование которого в некоторых случаях может быть полезно (особенно при работе с многомерными структурами данных).
Методы преобразования списка в строку и обратно
Фильтрация элементов итератора с помощью bool-списка функции itertools.compress()
Пропуск не нужных элементов последовательности с помощью itertools.dropwhile()
Комментариев нет.