Зарегистрируйтесь, чтобы продолжить обучение

Неизменяемость Основы Python

В Python некоторые типы данных называются неизменяемыми (или имутабельными). Это значит, что после создания их содержимое нельзя изменить. Самые важные примитивные типы, которые являются неизменяемыми:

  • int (целые числа),
  • float (вещественные числа),
  • str (строки),
  • bool (булевы значения).

Рассмотрим это на примере строк.

Методы строк не меняют оригинал

Когда мы вызываем метод у строки, кажется, что мы «меняем» строку, например, переводим в верхний регистр:

text = 'hexlet'
text.upper()
print(text)  # => hexlet

На самом деле метод upper() возвращает новую строку в верхнем регистре, а оригинальная строка text остаётся прежней. Вот так будет правильно:

text = 'hexlet'
new_text = text.upper()
print(new_text)  # => HEXLET

Если вы не сохраните результат метода в новую переменную, вы его просто потеряете.

Это касается и других методов:

text = '   hi   '
cleaned = text.strip()
print(cleaned)  # => hi
print(text)     # => hi

Метод strip() вернул новую строку без пробелов, но сам text не изменился.

Методы не изменяют оригинальную строку, потому что строки не могут быть изменены после создания. Это решение в языке Python принято специально, и у него есть ряд плюсов:

  • Повышенная надёжность: никто случайно не изменит значение
  • Упрощение работы в многопоточном коде
  • Оптимизация производительности: Python может переиспользовать одинаковые строки в памяти, экономя ресурсы

Позже вы увидите, что изменяемость и неизменяемость — важные свойства, особенно при передаче данных в функции и работе с коллекциями.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff