mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-21 18:54:20 +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/)
|
||||
|
||||
---
|
||||
|
||||
|
||||
### ▶ Мутируем немутируемое!
|
||||
|
||||
<!-- 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