Skip to content

Commit 206481b

Browse files
committed
update
Signed-off-by: Kirill Mokevnin <mokevnin@gmail.com>
1 parent c498f6d commit 206481b

File tree

16 files changed

+107
-191
lines changed

16 files changed

+107
-191
lines changed
Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,47 @@
1+
В Python некоторые типы данных называются **неизменяемыми** (или **имутабельными**). Это значит, что после создания их содержимое нельзя изменить. Самые важные примитивные типы, которые являются неизменяемыми:
12

2-
Допустим, у нас есть такой вызов:
3+
- `int` (целые числа),
4+
- `float` (вещественные числа),
5+
- `str` (строки),
6+
- `bool` (булевы значения).
7+
8+
Рассмотрим это на примере строк.
9+
10+
### Методы строк не меняют оригинал
11+
12+
Когда мы вызываем метод у строки, кажется, что мы «меняем» строку, например, переводим в верхний регистр:
313

414
```python
5-
name = 'Tirion'
6-
print(name.upper()) # => TIRION
7-
# Что напечатает на экран этот вызов?
8-
print(name) # => ?
15+
text = 'hexlet'
16+
text.upper()
17+
print(text) # => hexlet
918
```
1019

11-
Вызов метода `.upper()` возвращает новое значение, в котором все буквы преобразованы в верхний регистр, но он не меняет исходную строку. Поэтому внутри переменной окажется старое значение: `'Tirion'`. Эта логика справедлива для методов всех примитивных типов.
20+
На самом деле метод `upper()` **возвращает новую строку** в верхнем регистре, а оригинальная строка `text` остаётся прежней. Вот так будет правильно:
21+
22+
```python
23+
text = 'hexlet'
24+
new_text = text.upper()
25+
print(new_text) # => HEXLET
26+
```
1227

13-
Вместо того чтобы изменять значения, можно **заменить** значение. Для этого понадобятся переменные:
28+
Если вы не сохраните результат метода в новую переменную, вы его просто потеряете.
29+
30+
Это касается и других методов:
1431

1532
```python
16-
name = 'Tirion'
17-
name = name.upper()
18-
print(name) # => TIRION
33+
text = ' hi '
34+
cleaned = text.strip()
35+
print(cleaned) # => hi
36+
print(text) # => hi
1937
```
38+
39+
Метод `strip()` вернул новую строку без пробелов, но сам `text` не изменился.
40+
41+
Методы не изменяют оригинальную строку, потому что строки **не могут быть изменены после создания**. Это решение в языке Python принято специально, и у него есть ряд плюсов:
42+
43+
- Повышенная **надёжность**: никто случайно не изменит значение
44+
- Упрощение работы в **многопоточном** коде
45+
- **Оптимизация производительности**: Python может переиспользовать одинаковые строки в памяти, экономя ресурсы
46+
47+
Позже вы увидите, что изменяемость и неизменяемость — важные свойства, особенно при передаче данных в функции и работе с коллекциями.

modules/38-objects/300-method-expressions/Makefile

Lines changed: 0 additions & 2 deletions
This file was deleted.

modules/38-objects/300-method-expressions/description.es.yml

Lines changed: 0 additions & 41 deletions
This file was deleted.

modules/38-objects/300-method-expressions/en/EXERCISE.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

modules/38-objects/300-method-expressions/en/README.md

Lines changed: 0 additions & 20 deletions
This file was deleted.

modules/38-objects/300-method-expressions/en/data.yml

Lines changed: 0 additions & 3 deletions
This file was deleted.

modules/38-objects/300-method-expressions/es/EXERCISE.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

modules/38-objects/300-method-expressions/es/README.md

Lines changed: 0 additions & 20 deletions
This file was deleted.

modules/38-objects/300-method-expressions/es/data.yml

Lines changed: 0 additions & 6 deletions
This file was deleted.

modules/38-objects/300-method-expressions/index.py

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)