Змінні та незмінні об’єкти в Python {ПРИКЛАДИ}

Що таке змінний об'єкт?

Змінний в Python можна визначити як об'єкт, який може змінюватися або розглядатися як щось мінливе в природі. Змінний означає можливість змінювати або редагувати значення.

Змінні об'єкти в Python дозволити програмістам мати об’єкти, які можуть змінювати свої значення. Зазвичай вони використовуються для зберігання колекції даних. Його можна розглядати як щось, що змінилося, і внутрішній стан, застосовний в об’єкті, змінився.

Що таке незмінні об'єкти?

Незмінні об'єкти в Python можна визначити як об’єкти, які не змінюють своїх значень і атрибутів з часом.
Ці об’єкти стають постійними після створення та ініціалізації, і вони утворюють критичну частину структур даних, які використовуються в Python.

Python використовується в числах, кортежі, рядки, заморожені набори та визначені користувачем класи за деякими винятками. Вони не можуть змінюватися, а їхні значення та це залишаються постійними після ініціалізації, тому вони називаються незмінними.

In Python, все є об'єктом

У Python У мові програмування все можна розглядати як об’єкт, що містить списки, цілі числа та функції. Цю функцію можна порівняти з іншими мовами програмування, які підтримують об’єкти.

Цю функцію можна перевірити за допомогою a Python перекладач, як показано нижче: –

Python Код:

print("The following instance is an object:",isinstance(3,object))
print("Another instance for object", isinstance(True, object))
def my_func():
    return "guru99"
print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))

вихід:

A following instance is an object: True
Another instance for object True
This is a function example and regarded as an object in Python: True

Далі, Python надає вбудовану функцію з назвою id, яка повертає адресу об’єкта, наявну в пам’яті Python мова програмування

Python Код:

z=200
id(z)
print("The id of object is", id(z))

вихід:

the id of object is 9795360

У наведеному вище коді функція id із синтаксисом id(obj) дає адресу obj in Python пам'ять. Тут є об’єкт з іменем z і йому присвоєння 200. Потім об’єкт z передається у функцію id як id(z), а Python надає адресу об'єкта 9795360.

Змінні об'єкти в Python

У змінному об’єкті значення об’єкта змінюється протягом певного періоду часу.

У цьому прикладі ми пояснили змінні об’єкти в Python, і це використовує списки як застосування змінних об’єктів, як показано нижче: –

Python код:

mut_list = [1, 2, 3]
  print("The list in Python",mut_list)
mut_list[0] = 'Gurru99'
mut_list
  print("The list in Python after changing value",mut_list)

вихід:

The list in Python [1, 2, 3]
The list in Python after changing value ['Gurru99', 2, 3]

Як ми бачимо у наведеному вище прикладі, змінний список у Python мав значення 1,2,3. Перший елемент змінного списку змінюється з 1 на Guru99, і він не створює новий об’єкт, коли ініціалізується нове значення.

Тут ми можемо використовувати метод id для його використання. Далі показано використання методу id для змінних об’єктів, як показано нижче: –

Python код:

mut_list = [1, 2, 3]
print("The list in Python",mut_list)
print("the id of the list is ",id(mut_list))
mut_list[0] = 'Gurru99'
mut_list
print("The mut list in Python after changing value",mut_list)
print("the id of the list is post change in value",id(mut_list))

Вихід

The list in Python [1, 2, 3]
the id of the list is 139931568729600
The list in Python after changing value ['Gurru99', 2, 3]
the id of the list is post change in value 139931568729600

Наступний малюнок ілюструє змінний об’єкт у Python як показано нижче: –

Змінні об'єкти в Python

Незмінні об'єкти в Python

Незмінні об'єкти в Python це об’єкти, екземпляри яких не змінюються протягом періоду. Незмінні екземпляри певного типу після створення не змінюються, і це можна перевірити за допомогою методу id Python.

Розглянемо приклад об’єктів цілочисельного типу Python що ілюструє концепцію незмінних об’єктів у Python як показано нижче: –

Python код:

a=244
print("the number before change is",a)
print("the id of number before change is",id(a))
a=344
print("the number after change is",a)
print("the id of number after change is",id(a))

Вихід

the number before a change is 244
the id of number before change is 9796768
the number before change is 344
the id of number before change is 140032307887024

Вище видно, що є зміна в «а». Вивчимо, як працює механізм:

  • Немає жодних змін у значенні об’єкта при ініціалізації «a» за допомогою 344.
  • Замість цього створюється новий об’єкт, який обмежується буквою «a».
  • Інший об’єкт, якому присвоєно номер 244, більше не буде доступним.
  • У наведеному вище прикладі використовувався цілочисельний об’єкт.

При a=244 створюється новий об’єкт і посилається на «a», як показано нижче: –

Незмінні об'єкти в Python

Опублікувати з використанням a=344, є новий об’єкт, на який посилається «a». Наступна діаграма представляє те саме: –

Незмінні об'єкти в Python

Тому щоразу, коли ім’ю типу int присвоюється нове значення, відбувається зміна прив’язки імені до іншого об’єкта. Той самий принцип узгоджується з кортежами, струни, float і Boolean, тому їх називають незмінними.

Наслідки для ключів словника в Python

Словники можна визначити як упорядковані колекції, які зберігають дані в ключовому форматі та не допускають дублікатів. Словники містять один ключ, який має відповідну пару значень, вирівняну з ним. Вони змінні за типами, і їх вміст можна змінити навіть після їх ініціалізації та створення.

У будь-який момент ключ вказує на один певний елемент за раз. Ключі словників незмінні.

Розглянемо гіпотетичний сценарій, як показано нижче: –

a = [4, 6]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)

Результат: – Вищезазначене Python код не дає жодних результатів, а замість цього генерує помилку типу нехешованого типу. Це гіпотетична ситуація і не використовується в Python компілятор.

Тут, a визначається як [4,6], а в словнику воно визначається як x. тут, b визначається як [5,6,7], а в словнику воно визначається як y.

  • Ключ 'a' має значення [4,6], і він далі ініціалізується x.
  • Ключ "b" має значення [5,6,7], яке далі ініціалізується значенням "y" у словнику.
  • Тепер припустимо, що значення 'a ' додається 5 і 7, що є ключем до словника.
  • Потім словник був змінений, і він давав би обидва 'x' та 'y' як значення для наведеного вище словника.

Розглянемо такий сценарій, як показано вище: –

a = [5, 6,7]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)

Отже, як мова програмування, Python робить ключі словника незмінними, а словники є незмінними типами даних.

Винятки в незмінності

Тим не менш, Python надає винятки щодо незмінності, такі винятки можна спостерігати для типу об’єкта кортежу. Кортеж може бути комбінацією змінних і незмінних типів об’єктів. Розглянемо приклад, щоб пояснити винятки в незмінності, як показано нижче: –

Python код:

tupexample=([1,1],'guru99')
print("the tuple before change",tupexample)
print("the id of tuple before change",id(tupexample))
tupexample=([2,2],'guru99')
print("the tuple after change",tupexample)
print("the id of tuple after change",id(tupexample))

вихід:

the tuple before change ([1, 1], 'guru99')
the id of tuple before change 140649480694656
the tuple after change ([2, 2], 'guru99')
the id of tuple after change 140649480694592

Ви можете бачити в наведеному вище коді, що перший елемент, яким є список, є змінним, тоді як кортеж є незмінним. Значення кортежу не можна змінити, але вміст списку всередині кортежу може змінити його значення.

Таким чином, це створює виняток, що незмінні об’єкти не змінюють свого значення, але значення складових змінює своє значення.

Змінні та незмінні об’єкти

Ось головні відмінності між змінними та незмінними об’єктами:

Змінний об'єкт Незмінний об'єкт
Стан об’єкта можна змінити після створення Стан об’єкта не можна змінити після створення
Змінні об’єкти за своєю природою не вважаються потокобезпечними. Незмінні об'єкти вважаються потокобезпечними за своєю природою.
Змінні об’єкти не є остаточними, і, отже, програміст може продовжувати змінювати змінні об’єкти та використовувати ті самі об’єкти. Під час створення незмінного об’єкта критично важливо зробити класи остаточними

Python Незмінні типи даних

Клас Пояснення Незмінний чи ні
Bool Логічне значення Незмінний
Int Ціле значення (величина може бути довільною) Незмінний
Поплавок Число з плаваючою комою Незмінний
список Послідовність об'єктів змінної природи Змінний
Кортеж Послідовність об’єктів незмінної природи Незмінний
Вул Символ / рядок Незмінний
Установка набір окремих об’єктів невпорядкованої природи Змінний
Frozenset Клас множини незмінної природи Незмінний
Дікт Словникове або асоціативне відображення Змінний