Типи даних в Python

Мова Python відноситься до мов з неявною строгою динамічною типізацією. Неявна типізація означає, що при оголошенні змінної її тип не вказується (при явній типізації тип змінної вказується обов’язково).

Для мов з динамічною типізацією тип змінної визначається безпосередньо при виконанні програми.

Для мов програмування з динамічною типізацією характерно:

  • будь-яка змінна є посиланням;
  • типом змінної є те, на що вона посилається;
  • тип змінної може довільно змінюватися по ходу виконання коду, коли змінна починає посилатися на інший об’єкт.

Вбудовані типи даних.

Тип даних – це множина значень і операцій на цими значеннями. В Python типи даних можна розділити на вбудовані в інтерпретатор (built-in) і невбудовані, які можна використовувати при імпортуванні відповідних модулів.

До основних вбудованих типів в Python відносяться:

  1. None – невизначене значення змінної.
  2. Boolean Type – логічний тип.
  3. Numeric Type – числа:
    1. int – ціле число;
    2. float – число з плаваючою точкою (дійсне число);
    3. complex – комплексне число.
  4. Sequence Type – послідовності:
    1. list – список;
    2. tuple – кортеж;
    3. range – діапазон.
  5. Text Sequence Type – рядки;
    1. str – рядки.
  6. Binary Sequence Types – бінарні послідовності:
    1. bytes – байти;
    2. bytearray – масиви байт 24;
    3. memoryview – спеціальні об’єкти для доступу до внутрішніх даних об’єкта через protocol buffer.
  7. Set Types – множини:
    1. set – множина;
    2. frozenset – незмінювана множина.
  8. Mapping Types – словники:
    1. dict – словник.

Ініціалізація змінних.

Враховуючи неявну типізацію мови Python при оголошенні змінної, їй повинно бути надане значення (вона має бути ініціалізована). Щоб оголосити та ініціалізувати змінну необхідно: написати її ім’я, потім поставити оператор присвоєння (знак дорівнює) і вказати значення, з яким дана змінна буде створена.

Приклад:

  • a = 10

При ініціалізації змінної на рівні інтерпретатора відбувається наступне:

  • створюється цілочисельний об’єкт 10 (можна представити, що в цей момент виділяється комірка пам’яті певного об’єму і в неї записується число 10);
  • за оператором присвоєння = відбувається зв’язування змінної z і цілочисельного об’єкту 10 (визначається адреса отриманого об’єкту 10, яка присвоюється змінній z, тобто в результаті змінна z посилається на об’єкт 10).

Якщо, змінній за оператором присвоєння надається будь-який вираз (a = 5 + 10), то спочатку інтерпретатор обчислює значення виразу справа (5 + 10), створює об’єкт з отриманим значенням (15), а далі аналогічно до попереднього.

Ідентифікатор та тип об’єктів.

Python є об’єктно-орієнтовною мовою програмування, тому об’єктів в мові Python багато. Спробуємо розібратися, як пов’язане поняття об’єкту із змінними та їх значеннями.

Ми вже знаємо, що при ініціалізації змінної спочатку створюється цілочисельний об’єкт. Об’єкт в даному випадку – це абстракція для подання даних певного типу, що розміщуються в пам’яті за адресом. Кожен такий об’єкт має три атрибути: адресу (ідентифікатор об’єкту), значення та тип. Ідентифікатор об’єкту – це унікальна ознака об’єкту (адреса об’єкту в пам’яті), за якою можна відрізнити один об’єкт від іншого. Ідентифікатор представляється в вигляді деякого цілочисельного значення. Щоб переглянути ідентифікатор об’єкту, на який посилається певна змінна, в мові Python є спеціальна функція id(), для визначення типу призначена функція type().

Приклад:

  • a = 10
    # ініціалізуємо змінну а
  • print(a)
    # виводимо значення змінної
  • print(id(a))
    # виводимо ідентифікатор об’єкту
  • print(type(a))
    # виводимо до якого типу даних належить об’єкт