Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

Изменяемые и неизменяемые типы

Одни значения в Python можно менять на месте, другие — нет. Эта разница объясняет ряд загадок для новичка.

В чём разница

Список изменяемый: в него можно добавлять и удалять элементы, менять их. Число, строка и кортеж неизменяемы: их нельзя поменять «внутри» — можно лишь создать новое значение. Строка не меняется по букве, для изменения делают новую строку.

Пример с list и str

У списка есть методы, меняющие его на месте (append, например). У строки таких нет — все её методы возвращают НОВУЮ строку, а исходная остаётся прежней.

nums = [1, 2]
nums.append(3)        # список изменился: [1, 2, 3]
s = 'abc'
s.upper()             # вернёт 'ABC', но s всё ещё 'abc'

Почему это важно

Изменяемость объясняет частые сюрпризы: почему upper() «не сработал» (надо присвоить результат) и почему копирование списков имеет подводные камни. Понимание этой разницы избавляет от загадочных багов.

Частые вопросы

Список изменяемый, а строка нет? Да: список меняют на месте, строку — только пересоздают.

Почему s.upper() не изменил строку? Строка неизменяема; сохраните результат: s = s.upper().

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание