Что такое? Типы данных в Python, как и в любом другом языке программирования, играют важную роль, и их понимание является ключом к написанию эффективного кода. Речь идет про классы и экземпляры (объекты) этих классов.
Какие существуют? В Python есть разные типы данных, каждый из которых обладает своими уникальными характеристиками и возможностями использования. Самые ходовые – числа, списки, кортежи, словари, строки, множества.
В статье рассказывается:
- Что такое типы данных в Python
- Модель данных
- Числа
- Списки
- Кортежи
- Словари
- Строки
- Множества
- Что важно запомнить про типы данных Python
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Что такое типы данных в Python
Типом данных называют большое количество значений и комплекс операций, которые можно использовать на этих значениях. В языке программирования Python к ним относятся числа, строки, списки, словари, кортежи, множества и логический тип данных. Типы данных в Python можно разделить на:
- изменяемые (множества, списки, словари);
- неизменяемые (кортежи, строки, числа);
- упорядоченные (списки, строки, кортежи, словари);
- неупорядоченные (множества).
Python отличается от других языков своей типизацией – у него она неявная, сильная и динамическая. О чём это говорит? Неявная типизация означает, что нет необходимости при объявлении переменной определять конкретный тип данных, к которому она принадлежит, как это делается, к примеру, в языке С++.
Для примера:
int a = 10
Процесс объявления переменной в Python очень простой:
Например,
a = 10
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Скачивайте и используйте уже сегодня:
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Динамическая типизация говорит о том, что ошибки будут выявляться во время разработки программы. В языках программирования, у которых статическая типизация, поиск недочётов происходит во время компиляции. К примеру, в языке Python можно присоединить к одной переменной сначала объект одного типа данных, а потом другого:
Например,
a = «Welcome»
a = 1
Сильная (иначе строгая) типизация говорит о том, что в Python нельзя смешивать типы данных. Если переменная была определена как число, то сложить её со строкой не получится:
К примеру,
a = 10
print(‘Десять = ‘ + a)
Благодаря этому повышается надёжность кода, потому что приходится явно преобразовывать число к строке:
Например,
a = 10
print(‘Десять = ‘ + str(a))
Модель данных
До того, как разобраться с конкретными типами данных, немного поговорим о том, что значит модель данных, как образуются объекты в памяти, о работе процесса присваивания (=).
Для объявления переменной в Python, надо обозначить её имя, разместить знак присваивания (=) и ввести значение, которое сохранится в переменной.
К примеру,
a = 10
Переменная под именем «а» получила число 10. Целочисленное значение 10 представляет собой объект, как всё в языке Python (числа, строки, списки и прочее). Объект – это абстракция данных. Под данными подразумеваются не только объекты, но и отношения между ними. В объект входит три компонента: тип, идентификатор и значение.
Во время создания переменной на уровне интерпретатора формируется целочисленный объект 10, который откладывается где-то в памяти. У этого объекта есть идентификатор, значение 10 и целочисленный тип. Через оператора присваивания (=) генерируется ссылка между переменной a и объектом 10, целочисленного типа.
Название переменной обязательно должно отличаться от ключевых слов Python. Для проверки можно использовать способ iskeyword() из модуля keyword.
К примеру,
import keyword
keyword.iskeyword(«for») # => True
Приведём ещё один пример, чтобы лучше разобраться в операции присвоения в Python:
Например,
a = 5
b = 10
print(id(a)) # => 140732499849616
print(id(b)) # => 140732499849776
a = b
print(id(a)) # => 140732499849776
Здесь используется функцию id для определения идентификатора, с которым связана переменная. Не стоит опираться на конкретные значения, потому что у вас они получатся не такими. Отметим также, что после присвоения изменился идентификатор, на который ссылается переменная.
Скачать файлДля выяснения типа переменной можно использовать опцию type():
К примеру,
a = 5
print(type(a)) # => <class ‘int’>
Числа
В группу чисел входят числа целые, с плавающей запятой и комплексные. В языке Python они обозначаются как int, float и complex.
Для выяснения класса переменной или значения можно воспользоваться опцией type(), а функцией isinstance(), чтобы проверить, к какому классу принадлежит объект:
>>> a = 5
>>> print(a, «is of type», type(a))
5 is of type <class ‘int’>
>>> a = 2.0
>>> print(a, «is of type», type(a))
2.0 is of type <class ‘float’>
>>> a = 1+2j
>>> print(a, «is complex number?», isinstance(1+2j, complex))
(1+2j) is complex number? True
У целых чисел может быть любая длина и всё, что их ограничивает, это доступная память.
У чисел с плавающей запятой ограниченная точность. Различить целое число и число с плавающей запятой в консоли можно по внешнему виду (а точнее по точке): 1 – целое число, 1.0 – с плавающей запятой.
на обучение «Веб-разработчик» до 24 ноября
Для комплексных чисел существует формат записи: x + yj, где х является действительной частью числа, а у – мнимой. Ниже приведены несколько примеров:
>>> a = 1234567890123456789
>>> a
1234567890123456789
Читайте также!
>>> b = 0.1234567890123456789
>>> b
0.12345678901234568
>>> c = 1+2j
>>> c
(1+2j)
Как можно заметить, значение переменной b было усечено.
Списки
Список – это организованная последовательность элементов. Составляющие списка могут относиться к разным типам.
Сделать объявление списка совершенно несложно. Для этого используются квадратные скобки, внутри которых необходимо расположить элементы списка через запятую:
>>> a = [1, 2.2, ‘python’]
Есть вариант воспользоваться оператором [], чтобы извлечь из списка элемент (данный процесс называют «доступ по индексу») либо диапазон элементов (это называется «извлечение среза»).
>>> a = [5,10,15,20,25,30,35,40]
>>> print(«a[2] =», a[2])
a[2] = 15
>>> print(«a[0:3] =», a[0:3])
a[0:3] = [5, 10, 15]
>>> print(«a[5:] =», a[5:])
a[5:] = [30, 35, 40]
Списки относятся к изменяемому типу данных в Python. Это говорит о том, что значения его составляющих можно менять:
>>> a = [1,2,3]
>>> a[2] = 4
>>> a
[1, 2, 4]
Кортежи
Кортежи (tuple) представляют собой такие же списки, но они являются неизменяемым типом данных в Python. С ними можно работать так же, как и со списками, но нельзя производить манипуляции, которые поменяют кортеж:
some_tuple = (‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’)
#крайний элемент кортежа
last_element = some_tuple[-1]
print(last_element)
#срез кортежа с первого по третий элемент
tuple_slice = some_tuple[0:3]
print(tuple_slice)
#изменяем значение первого компонента
some_tuple[0] = ‘c’
Во время попытки поменять элемент «р» на «с» Python выдаёт ошибку:
TypeError: ‘tuple’ object does not support item assignment
Вам может быть непонятно, для чего использовать кортежи, когда существуют списки, у которых больше методов и операций. Как говорилось выше, бывают случаи, когда разработчикам нужна уверенность в том, что от функции не поменяется значение объекта. Именно для этого и нужны кортежи.
Словари
Словарь (dict) является неупорядоченной коллекцией пар «ключ – значение». Ключами могут быть любые постоянные объекты: числа, строки и даже кортежи.
Пользоваться элементами, удалять и генерировать новые достаточно легко:
#словарь с данными об ученике GeekBrains
some_dict = {‘first_name’:’Алексей’,
‘age’:35, ‘is_paid’:True,
‘courses’:[‘python’, ‘javascript’, ‘html/css’], }
print(some_dict)
#элемент с ключом ‘last_name’
print(some_dict[‘first_name’]) # ‘Алексей’
#создать элемент, присвоив значение несуществующему ключу
some_dict[‘second_name’] = ‘Петров’
print(some_dict)
#{‘first_name’: ‘Алексей’, ‘age’: 35, ‘is_paid’: True, ‘courses’: [‘python’, ‘javascript’, ‘html/css’], ‘second_name’: ‘Петров’}
del some_dict[‘is_paid’]
print(some_dict)
#{‘first_name’: ‘Алексей’, ‘age’: 35, ‘courses’: [‘python’, ‘javascript’, ‘html/css’], ‘second_name’: ‘Петров’}
Значениями в словаре могут быть объекты, относящиеся к разным типам (в том числе и другие словари). Лимита вложенности нет.
Строки
Строка – ещё один тип данных в программировании Python, который представляет собой последовательность символов. Чтобы создать строку, используют одинарные или двойные кавычки. Для обозначения многострочных кавычек можно пользоваться тройными кавычками, »’ либо «»»:
>>> s = «Простая строка»
>>> s = »’Многострочная
строка»’
К строкам, как и к спискам, а также картежам, можно применять оператор []. Обратите внимание, что строки в языке Python являются неизменяемой последовательностью. Это значит, что все функции и методы могут только формировать новую строку.
Множества
Множества относятся к неупорядоченной уникализированной последовательности. В процессе объявления множества используют элементы через запятую внутри фигурных скобок:
>>> a = {5,2,3,1,4}
#вывод переменной множества
>>> print(«a =», a)
a = {1, 2, 3, 4, 5}
#тип данных переменной а
>>> print(type(a))
<class ‘set’>
Читайте также!
К множествам можно применять такие процессы, как объединение и пересечение. Из-за обязательной уникальности элементов множества, дубликаты автоматически удаляются:
>>> a = {1,2,2,3,3,3}
>>> a
{1, 2, 3}
Так как множество – это неупорядоченная последовательность, воспользоваться оператором извлечения не получится:
>>> a = {1,2,3}
>>> a[1]
Traceback (most recent call last):
File «<stdin>», line 1, in <module>
TypeError: ‘set’ object does not support indexing
Что важно запомнить про типы данных Python
- У каждого объекта в Python свой уникальный тип данных (int, string, list и прочие), и генерируются они конструкторами соответствующих классов.
- Переменные в языке Python являются названиями для области хранения данных вычислительной машины. Каждая переменная в коде имеет личный тип данных, по которому можно понять, какие значения могут находиться в этой переменной и сколько памяти ей необходимо.
- К неизменяемым объектам относятся те, состояние и содержимое которых нельзя менять. Если попытаться изменить значение такого объекта, создастся новый объект с необходимым значение и с таким же названием. Неизменные объекты включают в себя число, строку, кортеж.
- Изменяемыми называют те объекты, значения которых можно поменять после их создания. В их числе список, словарь или множества.
- Числовым типом данных, используемым в Python, являются числа целые, с плавающей запятой и комплексные.
- В логическом типе данных есть лишь два значения – True и False.
- В строковом типе данных хранятся текстовые сведения или последовательность байтов.
- Списки в Python представляют собой упорядоченную систему элементов, которые могут относиться к разным типам данных.
- Кортежи в Python являются такими же списками, но с одним лишь отличием – менять их нельзя.
- Словарями называют неупорядоченный перечень пар в формате ключ-значение.
- Множество представляет собой комплекс уникальных и неупорядоченных элементов, которые относятся к неизменяемому типу.
Язык программирования Python является объектно-ориентированным, то есть в его основе находятся объекты и классы. Объектом называют область хранения информации в компьютере, которую описывают через тип (иначе класс) и значение. В то же время тип влияет на область значений объекта, процессы и методы, которые на нём можно использовать. У Python есть большое количество встроенных типов данных. Это позволяет программисту реже писать собственные классы во время решения простых задач.
С версии 3.7 множества стали упорядочены