Русский
Открыть в Telegram

Пост Чем мутабельные объекты отличаются от иммутабельных?

25 апреля 2023
P
PYTHON IN DEPTH🐍
Чем мутабельные объекты отличаются от иммутабельных? В python объекты бывают мутабельные и иммутабельные. Значние иммутабельного объектра нельзя изменить после того, как он был создан, а значение мутабельного можно. Рассмотрим на примере. В Python есть встроенная функция id(). В реализации CPython она возвращает адрес, по которому объект находится в памяти. Создадим список и посмотрим, в ячейке с каким номером он окажется. beatles = [“Ringo”, “Paul”, “John”, “George”] id(beatles) 140181376779336 Видим, что список лежит по адресу 140181376779336. Теперь изменим какой-нибудь элемент списка и посмотрим, изменился ли адрес. >>>beatles[0] = “Pete” >>>beatles [“Pete”, “Paul”, “John”, “George”] >>>id(beatles) 140181376779336 Видим, что адрес списка не меняется, если мы изменяем элементы, которые в него входят. Теперь создадим в памяти строку >>>bass = "Paul" >>>id(bass) 140068833595776 и добавим в нее что-нибудь >>>bass += " McCartney" >>>bass Paul McCartney >>>id(bass) 140068833600432 Видим, что адрес строки изменился. Почему так? Строка иммутабельна, то есть, после того, как она уже создана, нельзя изменить ее содержимое. Поэтому интерпретатор перезаписывает ее по новому адресу с новыми символами. А список мутабелен, поэтому его адрес не меняется оттого, что мы заменили один элемент. Вот какие встроенные типы есть в python: Класс Описание Мутабелен? --------------------------------- bool булевый тип ☹️ int целочисленный тип ☹️ float число с плавающей запятой ☹️ list список ☺️ tuple кортеж ☹️ str строка ☹️ set множество ☺️ dict словарь ☺️ Количество встроенных иммутабельных типов в python больше, но если вы захотите создать свой класс, он будет мутабельным. Важно отличать мутабельность от иммутабельности, так как некоторые типы данных, например, dict или set, реализованы как хэш-таблицы. Когда вы добавляете элемент в множество, интерпретатор берет хэш от этого элемента и размещает значение по адресу, который совпадает с хэшом. Если мы попытаемся положить список в множество, то получим TypeError, потому что хэш бы изменился, когда изменился бы один из элементов списка: TypeError: unhashable type: 'list' Поэтому мутабельные объекты, такие как словари или списки, не могут быть ключами в словаре или элементами множества. А вот строки или числа могут. И это на самом деле очень естественно🐍
1 · 204 ·

Рядом в ленте

PPYTHON IN DEPTH🐍Про культуру коммитов Работаю над куском кода, который опирается на json файл. Файл этот длиной 7к+ строк (только не спрашивайте, как так вышло). И кусок этот оPPYTHON IN DEPTH🐍Одна особенность filter Синтаксис встроенной функции filter такой: filter(function, iterable). Эта функция фильтрует значения переданной последовательности с по
это сообщение
PPYTHON IN DEPTH🐍Параметры map А вы знали, что у функции map три параметра? Функция map используется для того, чтобы делать однотипные операции над наборами данных. Например, с PPYTHON IN DEPTH🐍Гид по множественному присваиванию Уверена, что множественное присваивание в Python видели все. Выглядит оно вот так: >>> x, y, z = 1, 2, 3 >>> x 1 >>> z 3 На с
PPYTHON IN DEPTH🐍PYTHON IN DEPTH🐍@python_in_depth · канал · Технологии
385подписчиков50средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем