mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 11:04:25 +01:00
Translate Mutating the immutable! example
This commit is contained in:
parent
495c840254
commit
f2b1d7e8c2
39
translations/README-ru.md
vendored
39
translations/README-ru.md
vendored
@ -1685,3 +1685,42 @@ True
|
|||||||
- Интересное чтение: [Рефлексивность и другие основы цивилизации](https://bertrandmeyer.com/2010/02/06/reflexivity-and-other-pillars-of-civilization/)
|
- Интересное чтение: [Рефлексивность и другие основы цивилизации](https://bertrandmeyer.com/2010/02/06/reflexivity-and-other-pillars-of-civilization/)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### ▶ Мутируем немутируемое!
|
||||||
|
|
||||||
|
<!-- Example ID: 15a9e782-1695-43ea-817a-a9208f6bb33d --->
|
||||||
|
|
||||||
|
Это может показаться тривиальным, если вы знаете, как работают ссылки в Python.
|
||||||
|
|
||||||
|
```py
|
||||||
|
some_tuple = ("A", "tuple", "with", "values")
|
||||||
|
another_tuple = ([1, 2], [3, 4], [5, 6])
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
```py
|
||||||
|
>>> some_tuple[2] = "change this"
|
||||||
|
TypeError: 'tuple' object does not support item assignment
|
||||||
|
>>> another_tuple[2].append(1000) # Не приводит к исключениям
|
||||||
|
>>> another_tuple
|
||||||
|
([1, 2], [3, 4], [5, 6, 1000])
|
||||||
|
>>> another_tuple[2] += [99, 999]
|
||||||
|
TypeError: 'tuple' object does not support item assignment
|
||||||
|
>>> another_tuple
|
||||||
|
([1, 2], [3, 4], [5, 6, 1000, 99, 999])
|
||||||
|
```
|
||||||
|
|
||||||
|
Но кортежи неизменяемы... Что происходит?
|
||||||
|
|
||||||
|
#### 💡 Объяснение:
|
||||||
|
|
||||||
|
* Перевод цитаты из [документации](https://docs.python.org/3/reference/datamodel.html)
|
||||||
|
|
||||||
|
> Неизменяемые последовательности
|
||||||
|
Объект неизменяемого типа последовательности не может измениться после создания. (Если объект содержит ссылки на другие объекты, эти объекты могут быть изменяемыми и могут быть изменены; однако набор объектов, на которые непосредственно ссылается неизменяемый объект, не может изменяться.)
|
||||||
|
|
||||||
|
* Оператор `+=` изменяет список на месте. Присваивание элемента не работает, но когда возникает исключение, элемент уже был изменен на месте.
|
||||||
|
* Также есть объяснение в официальном [Python FAQ](https://docs.python.org/3/faq/programming.html#why-does-a-tuple-i-item-raise-an-exception-when-the-addition-works).
|
||||||
|
|
||||||
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user