mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 02:54:25 +01:00
Translate Same operands, different story example
This commit is contained in:
parent
c2dd151ed5
commit
40503d5ac5
43
translations/README-ru.md
vendored
43
translations/README-ru.md
vendored
@ -2430,3 +2430,46 @@ SyntaxError: invalid syntax
|
|||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### ▶ Одни и те же операнды, разная история!
|
||||||
|
<!-- Example ID: ca052cdf-dd2d-4105-b936-65c28adc18a0 --->
|
||||||
|
1\.
|
||||||
|
```py
|
||||||
|
a = [1, 2, 3, 4]
|
||||||
|
b = a
|
||||||
|
a = a + [5, 6, 7, 8]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
```py
|
||||||
|
>>> a
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8]
|
||||||
|
>>> b
|
||||||
|
[1, 2, 3, 4]
|
||||||
|
```
|
||||||
|
|
||||||
|
2\.
|
||||||
|
```py
|
||||||
|
a = [1, 2, 3, 4]
|
||||||
|
b = a
|
||||||
|
a += [5, 6, 7, 8]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
```py
|
||||||
|
>>> a
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8]
|
||||||
|
>>> b
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 💡 Объяснение:
|
||||||
|
|
||||||
|
* Выражение `a += b` не всегда ведет себя так же, как и `a = a + b`. Классы *могут* по-разному реализовывать операторы *`op=`*, а списки ведут себя так.
|
||||||
|
|
||||||
|
* Выражение `a = a + [5,6,7,8]` создает новый список и устанавливает ссылку `a` на этот новый список, оставляя `b` неизменным.
|
||||||
|
|
||||||
|
* Выражение `a += [5,6,7,8]` фактически отображается на функцию "extend", которая работает со списком так, что `a` и `b` по-прежнему указывают на тот же самый список, который был изменен на месте.
|
||||||
|
|
||||||
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user