From be9c3bb0ae6e6bebe700bb01c6b6398fe4391782 Mon Sep 17 00:00:00 2001 From: Vadim Nifadev <36514612+nifadyev@users.noreply.github.com> Date: Wed, 24 Apr 2024 12:24:34 +0300 Subject: [PATCH] Translate Ellipsis example --- translations/README-ru.md | 61 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/translations/README-ru.md b/translations/README-ru.md index 92fcdbb..bf9ea26 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -3141,3 +3141,64 @@ Try block executed successfully... - Блок `else` после блока `try` также называется "блоком завершения", поскольку достижение `else` в операторе `try` означает, что блок попыток действительно успешно завершен. --- + + +### ▶ Многоточие * + +```py +def some_func(): + Ellipsis +``` + +**Результат** +```py +>>> some_func() +# Ни вывода, ни ошибки + +>>> SomeRandomString +Traceback (most recent call last): + File "", line 1, in +NameError: name 'SomeRandomString' is not defined + +>>> Ellipsis +Ellipsis +``` + +#### 💡 Объяснение +- В Python, `Ellipsis` - глобальный встроенный объект, эквивалентный `...`. + ```py + >>> ... + Ellipsis + ``` +- Многоточие может использоваться в нескольких случаях, + + В качестве заполнителя для кода, который еще не написан (аналогично оператору `pass`) + + В синтаксисе срезов (slices) для представления полных срезов в оставшемся направлении + ``py + >>> import numpy as np + >>> three_dimensional_array = np.arange(8).reshape(2, 2, 2) + array([ + [ + [0, 1], + [2, 3] + ], + + [ + [4, 5], + [6, 7] + ] + ]) + ``` + Таким образом, наш `трехмерный_массив` представляет собой массив массивов массивов. Допустим, мы хотим вывести второй элемент (индекс `1`) всех внутренних массивов, мы можем использовать `Ellipsis`, чтобы обойти все предыдущие измерения + ``py + >>> three_dimensional_array[:,::,1] + array([[1, 3], + [5, 7]]) + >>> three_dimensional_array[..., 1] # использование Ellipsis. + array([[1, 3], + [5, 7]]) + ``` + Примечание: это будет работать для любого количества измерений. Можно даже выбрать срез в первом и последнем измерении и игнорировать средние (`n_dimensional_array[firs_dim_slice, ..., last_dim_slice]`) + + В [подсказках типов](https://docs.python.org/3/library/typing.html) для указания только части типа (например, `(Callable[..., int]` или `Tuple[str, ...]`)) + + Вы также можете использовать `Ellipsis` в качестве аргумента функции по умолчанию (в случаях, когда вы хотите провести различие между сценариями "аргумент не передан" и "значение не передано"). + +---