Задать вопрос
@CulHatsker
Маслину поймал

Что значит данный отрывок из документации Python?

Утверждение: "...strings ... are immutable."
Полное предложение: "An object’s mutability is determined by its type; for instance, numbers, strings and tuples are immutable, while dictionaries and lists are mutable."
Я не могу понять, что означает "numbers and strings are immutable". Почему строке или числу нельзя изменить значение?
Сама документация
  • Вопрос задан
  • 2763 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@zedxxx
Почему строке или числу нельзя изменить значение?

При попытке "изменить" значение у неизменяемого типа, будет создан новый объект, которому будет присвоено новое значение. Т.е. внешне он как бы изменится, но вот "под капотом" будет происходить создание/уничтожение объектов, а не изменение одного и того же объекта (вы же в курсе, что в питоне даже простой int является объектом?). И вот такое поведение следует учитывать, чтобы писать оптимальный код, в котором не будет зазря копироваться и уничтожаться куча объектов.

В виду этого, у строк, скажем, нельзя безболезненно изменять отдельные символы, и приходится делать странные вещи, если символ таки изменить нужно: Change one character in a string in Python?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@iamnothing
Когда говорят mutable/immutable, то имеют ввиду сам объект в памяти, а не символ переменной, который привязан к этому объекту. Если я не ошибаюсь, то строки и числа immutable в большинстве языков прогр-ния. Например, если есть число 10 (не переменная!, а само число), то его значение не может быть 0, или -99, или 55.64 - оно всегда равно десяти, и если вам нужно чтобы в переменной было другое число, то вы просто приравниваете переменную к другому числу. То же самое и со строками. Например, если происходит конкатенация, то результат конкатенации - это совершенно новый объект в памяти, который уже и присвоите к какой-нибудь переменной. Т.е. любые операции со строками производят в памяти новые объекты строк.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы