124 подписчика
· 27.06.2024Вопрос
Какие типы данные есть в Python? На какие 2 вида их принято разделять?
5 комментов
· 28.06.2024
Ответ редакции:
В Python приято выделять 2 вида типов данных:
- изменяемые (mutable)
- неизменяемы (immutable)
Их основное отличие заключается в том, что объекты изменяемых типов данных (как следует из названия) доступны к изменению после того, как были созданы, т.е. при указании им нового значения, оно будет помещено область памяти оригинального объекта.
К таким относятся: list, dict, set, bytearray.
Так например добавляя в list новый элемент, список останется прежним объектом, но количество элементов в нем увеличится (за исключением ряда краеугольных ситуаций, когда размер списка начинает превышать изначально максимально доступный, в таком случае происходит пересоздание списка, но этот момент мы опустим). В свободный слот списка добавляется ссылка еще на один (новый) элемент.
В свою же очередь, объекты неизменяемых (immutable) типов данных, при присвоении им нового значения, начинают указывать на новую область памяти, в которой находится новое значение объекта.
К таким относятся: int, float, complex, str, tuple, bytes, bool, frozenset.
Так при присвоении целому числу (int) нового значения, изменится не только само значение объекта, но и адрес в памяти на который ссылается переменная.
Интересно однако, что внутри объектов с неизменяемым (immutable) типом данных могут содержаться элементы изменяемых (mutable) типов данных. Например, кортеж списков: foo = ([1], [2, 3])
Но такие объекты, как и все объекты изменяемых (mutable) типов невозможно использовать в качестве ключей словарей так как интерпретатор при вычислении хэш-значения объекта-ключа не сможет получить одинаковые значения после того как объект будет изменен
0
ответить
коммент удалён
· 28.06.2024
И никто не объясняет зачем их нужно различать (тем более, что изменяемые типы тоже пересоздаются)… как же проще было в Си, с их указателями и калоками/малоками…
0
ответить
ответ удалён
· 27.06.2024
Ссылочные и значимые?
Ответ не из python, но предположу что тут что-то подобное)
0
ответить
коммент удалён
· 28.06.2024
Ссылочное почти все в питоне, но не про это, 2 группы - изменяемые и неизменяемые. Неизменяемые: int, float, str, none, tuple, bool. Изменяемые: list, set, dict, польз классы
0
ответить
ответ удалён
· 28.06.2024
Переменны которые добавил в код я, и переменные которые в уже были в коде, и я их не трогал!
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён