Типы данных в Python разделяются на встроенные и внешние доступные при импорте из модулей.
Встроенные типы данных:
- None (None Type) — неопределенное значение переменной
- Числовые (Numeric):
- Целые числа (int)
- Числа с плавающей точкой (float)
- Комплексное число (complex) [еще объяснение]
- Текстовые (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) — это те же списки только их нельзя изменять.