Python3: Изменяемый, неизменяемый… все является объектом!

Вывод и TLDR

Объекты — это все, что обрабатывает Python, и, как ни странно, он ссылается на них с помощью адресов памяти (да, с помощью указателей). Некоторые объекты изменяемы, а другие неизменны.

Хотите узнать больше?

Введение

К настоящему моменту вы уже знаете, что Python — это язык объектно-ориентированного программирования (ООП), и он принимает эту парадигму в том смысле, что объекты могут быть присвоены переменной или переданы в качестве аргумента функции. Имейте в виду, что эти объекты могут изменяться или не могут быть изменены.

ID и тип

Две очень важные команды. Функция type() позволяет нам увидеть, с каким объектом мы имеем дело, а id() возвращает идентификатор объекта, и под этим мы подразумеваем уникальное целое число, с которым будет связан объект, пока он существует в памяти.

Некоторые из изменяемых типов данных в Python — это список, словарь, набор и определяемые пользователем классы. С другой стороны, некоторые из неизменяемых типов данных — это int, float, decimal, bool, string, tuple и range.

Изменяемые объекты

Вместо того, чтобы писать здесь, какие объекты изменяемы, а какие нет, я нашел для вас эту удобную таблицу, чтобы вы могли обращаться к ней каждый раз, когда она вам понадобится.

Как вы уже могли догадаться, изменяемый объект чаще всего используется нашими скриптами для достижения цели.

Неизменяемые объекты

Но иногда нам не нужно, чтобы эти объекты изменялись, поэтому в Python есть классы, которые проверяются как неизменяемые прямо в таблице. Они используются, когда информация, содержащаяся в них, является фиксированной ссылкой, которая необходима нашему коду для правильной работы. Если вам действительно нужно его изменить, вы должны клонировать его в изменяемый объект, внести необходимые изменения и вернуть его в неизменяемый объект.

Почему это важно и насколько по-разному Python обрабатывает изменяемые и неизменяемые объекты

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

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

Как аргументы передаются функциям и что это означает для изменяемых и неизменяемых объектов?

Функции получают неизменяемые объекты по их ссылке, так как другого доступного метода нет. Когда изменяемый объект передается в функцию, вместо него передается его копия, что делает эту процедуру хорошим способом напрасной траты памяти.