Python

Мутабельный vs. Неизменяемые объекты в Python

Мутабельный vs. Неизменяемые объекты в Python

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

Мутабельный vs. Неизменный

Мутабельный субъекты могут изменить их состояние или сущность чтобы описать несоответствие, и неизменный сущности не могут изменить свое состояние или сущность. Поэтому при создании объекта особый ID объекта выделяется. Во время выполнения указывается тип объекта, и он не может быть обновлен позже. Встроенные формы, такие как переменные int, float, bool, str, tuple и Unicode, неизменяемы. Такие объекты, как список, набор, байтовые массивы и словарь встроенных категорий, являются изменяемыми.

Понять функцию идентификатора и типа

Интегрированный я бы() метод содержит идентификатор объекта как целое число. Это целое число обычно относится к месту хранения объекта. 'является'оператор связывает тождества двух объектов друг с другом. Интегрированная функция, тип(), возвращает тип объекта. Сравните две переменные 'Икс' а также 'у', имеющее то же значение, с использованием оператора равенства'х == у', он выведет Правда. С помощью функция id (), мы сравнили адреса памяти обеих переменных, он выведет Ложь потому что обе переменные разные и расположены в разных местах памяти, хотя значения, которые они содержат, одинаковы.

Сделайте еще одну переменную 'z'который указывает на идентичный объект, который'Икс'направляет, используя оператор присваивания'знак равно'. С помощью 'является'мы обнаружили, что они оба указывают на один и тот же объект и имеют одинаковые адреса памяти.

Неизменяемые типы переменных

Давайте посмотрим на некоторые неизменяемые типы переменных.

Целочисленный тип данных

Определим переменную 'Икс'имеющий ценность'10'. Встроенный id () метод используется для определения местонахождения "Икс'в памяти и тип() используется для определения его типа. Когда мы пытаемся изменить значение 'Икс', он успешно изменен, хотя адрес памяти возвращается по другому. Это потому, что мы фактически не изменили значение 'Икс', но мы создали другой объект с таким же именем'Икс'и присвоить ему другое значение. Мы связали имя 'Икс'к новому значению. Теперь, когда ты звонишьИкс'он выведет новое значение.

String DataType

То же самое для строкового типа данных, мы не можем изменить существующий Переменная но мы должны Создайте новый с таким же именем. Здесь у нас есть определенный строковая переменная 'Икс'и хочу добавить'ш'к своим нулевым индексам. Он выведет TypeError, показывая, что строковый объект не поддерживает обновление.

Тип данных кортежа

Получите представление о типе кортежа Переменная, мы определили кортеж с 4 значениями. Мы использовали функция id () вывести его адрес. Когда мы хотим изменить его значение на 0 индексов, это дает TypeError этот кортеж не поддерживает назначение или обновление элементов.

Напротив, вы можете Обновить весь кортеж, определяя его из царапать. Теперь, когда вы его проверяете, вы найдете новое значение и новый адрес.

Тип данных с плавающей запятой

У нас есть переменная типа float 'Икс'. С помощью функция id (), мы должны узнать его адрес. Когда мы хотим изменить его значение на индекс 1, это дает TypeError этот поплавок не поддерживает модификацию предметов.

И наоборот, мы обновили плавать снова определив его. Теперь, когда мы его вызываем, мы найдем новое значение и новый адрес.

Типы изменяемых переменных

Теперь мы рассмотрим некоторые изменяемые типы переменных.

Список DataType

Мы определили список названный 'Икс'и добавьте к нему некоторые значения. Пока запустить, он будет отображать значения списка. Когда ты Обновить список, присвоив новые значения индекс 0 и 2, он успешно сделает это.

Вышеописанный пример представляет собой простой и базовый пример модификации. Чтобы проверить изменчивость на другом уровне, давайте посмотрим на тот же пример с небольшими изменениями. Мы создали новое имя »у'и привязал его к тому же объекту списка. Когда мы проверили,Икс' такой же как 'у', он возвращает True. С другой стороны, оба 'Икс' а также 'у'иметь одно и тоже объем памяти адреса.

Теперь добавьте новое значение в имя списка 'x' и проверьте обновленный вывод.

Теперь, когда вы проверяете список имя 'y', он будет отображать тот же список, что и для 'x'. Это означает, что когда мы обновляем один и тот же список объектов, у которого есть два разных имени 'x' и 'y'. Оба они одинаковы и используют одни и те же адреса памяти даже после модификации.

Тип данных словаря

Поскольку словари - это обычно используемые переменные в Python, давайте посмотрим на изменчивость словарей. Мы определили словарь с именем 'диктовать'с тремя ключами и их значениями. Когда мы распечатаем его, он отобразит все его содержимое. Вы можете распечатать каждое значение словаря отдельно, а также использовать их ключи вместо индексов.

Мы хотим менять конкретное значение, обновив ключ 'Имя'. Он выведет обновленный словарь. Ключи словаря неизменяемы.

Определим список а также кортеж в отдельности. Убедись в том, что кортеж должен иметь значение типа списка в нем и в списке есть значение типа кортежа в нем следовательно.

А кортеж имеет список на его 0 индексов поэтому, когда вы меняете в 0 индексов кортежа, вы должны упомянуть индекс списка, в котором вы хотите изменить. Изменение происходит, потому что список неизменен.

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

Заключение

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

5 лучших эргономичных компьютерных мышей для Linux
Вызывает ли длительное использование компьютера боль в запястье или пальцах?? Вы страдаете от скованности суставов и постоянно должны пожимать руки? В...
Как изменить настройки мыши и сенсорной панели с помощью Xinput в Linux
Большинство дистрибутивов Linux по умолчанию поставляются с библиотекой libinput для обработки событий ввода в системе. Он может обрабатывать события ...
Переназначьте кнопки мыши по-разному для разных программ с помощью X-Mouse Button Control
Может быть, вам нужен инструмент, который мог бы изменять управление вашей мышью с каждым приложением, которое вы используете. В этом случае вы можете...