Data Types in Python

Типы данных в Python разделяются на встроенные и внешние доступные при импорте из модулей.

Встроенные типы данных:

  • None (None Type) — неопределенное значение переменной
  • Числовые (Numeric):
  • Текстовые (Text Sequence):
    • Строки (str)
  • Логические (Boolean):
    • Булево (bool) — принимает истину или ложь
  • Списки (Sequence):
    • Список (list)
    • Кортеж (tuple)
    • Диапазон (range)
  • Словари (Mapping Types):
    • Словарь (dict)
  • Множества (Set Types):
    • Множество (set)
    • Неизменяемое множество (frozen)
  • Бинарные списки (Binary Sequence Type):Байты (bytes)
    • Массивы байт (bytearray)
    • Доступ к внутренним данным объекта (memoryview)

Рассмотрим подробнее

Для начала запомним — чтобы посмотреть тип данных любого объекта в python необходимо использовать функцию type():

a = None
b = 1
c = 3.14
d = 3 + 2j
e = 'текст'
print('a = ', type(a))
print('b = ', type(b))
print('c = ', type(c))
print('d = ', type(d))
print('e = ', type(e))

Результат выполнения будет таким:

a =  <class 'NoneType'>
b =  <class 'int'>
c =  <class 'float'>
d =  <class 'complex'>
e =  <class 'str'>

Числовой (Numeric)

Целые числа (int): могут быть любой длины и ограничиваются лишь доступной памятью.

x = 1
y = 35656222554887711
z = -35656222554887711

Числа с плавающей точкой (float): представляет собой число с плавающей точкой двойной точности, независимо от системы и версии. Диапазон чисел, представимых таким форматом составляет: ±1.7*10-308 до 1.7*10+308

x = 1.10
y = 1.0
z = -35.59


Проблема  0.1 + 0.1 + 0.1 == 0.3
>>> FALSE

Если вбить в интерпретаторе 0.1 + 0.1 + 0.1 == 0.3 то получим False. К сожалению, большинство десятичных дробей не могут быть точно представлены в двоичной записи. Следствием этого является то, что в основном десятичные дробные числа вы вводите только приближенными к двоичным, которые и сохраняются в компьютере.

Рассмотрим дробь 1/3. Вы можете приблизительно представить ее десятичной дробью:

0.3

или лучше

0.33

еще лучше

0.333

… и так далее. Независимо от того, как много цифр вы запишите, результат никогда не будет точно 1/3, но будет все более лучшим приближением к 1/3.

Комплексное число (complex): хранит пару значений типа float,
одно из которых представляет действительную часть комплексного числа, а другое — мнимую. В завершении мнимой составной части комплексного числа обязательно должна стоять буква j.

c = 1 + 2j # комплексное число
print("c = " + str(c))

Результат будет таким:

c = (1+2j)

Пример операций сложения комплексных чисел:

a = 2 + 3j
b = 1 + 2j
c = a + b
print("c = " + str(c))
c = (3+5j)

Текстовый тип

Он же string, или сокращено str — это набор символов между кавычек. Из строк можно взять подстроку используя оператор нарезки ( [ ] и [ : ] ) с индексами от нуля для первого символа строки и до последнего. Так же можно использовать обратную индексацию от -1 для последнего символа до начала.

text = 'Привет Python!'
print(text[0:5])

Выведет следующее:

Привет

Еще немного примеров:

print(text[:]) # Выведет весь текст
print(text[::-1]) # Шаг отрицательный. Выведет фразу наоборот
print(text[::2]) # Выведет каждый второй символ
print(text[-1]*10) # Выведет 10 восклицательных знаков

Логический

a = True
b = False
print(a, b)
print(type(a))
(True, False)
<type 'bool'>

Еще интересный пример:

a = True
b = 1
print(a == b)
print(type(a))
print(type(b))
True
<type 'bool'>
<type 'int'>

Списки

Список (list) — состоит из элементов любого типа разделенных запятой внутри квадратных скобок [].

a = [True, 213, 3.14, 'text', -701.2]
print(a)
print(type(a))
[True, 213, 3.14, 'text', -701.2]
<type 'list'>

Списки похожи на массивы в других языках, отличительной чертой является, то что элементами могут быть любые типы данных (как в примере выше). Доступ к элементам можно получить аналогично текстовым данным.

Кортеж (tuple) — это те же списки только их нельзя изменять.