1
0
mirror of https://github.com/satwikkansal/wtfpython synced 2024-11-12 14:38:52 +01:00

Translate Ellipsis example

This commit is contained in:
Vadim Nifadev 2024-04-24 12:24:34 +03:00
parent 193c839163
commit be9c3bb0ae

View File

@ -3141,3 +3141,64 @@ Try block executed successfully...
- Блок `else` после блока `try` также называется "блоком завершения", поскольку достижение `else` в операторе `try` означает, что блок попыток действительно успешно завершен.
---
### ▶ Многоточие *
<!-- Example ID: 969b7100-ab3d-4a7d-ad7d-a6be16181b2b --->
```py
def some_func():
Ellipsis
```
**Результат**
```py
>>> some_func()
# Ни вывода, ни ошибки
>>> SomeRandomString
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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` в качестве аргумента функции по умолчанию (в случаях, когда вы хотите провести различие между сценариями "аргумент не передан" и "значение не передано").
---