Посмотреть все уроки курса
Выбрать другой урок из курса
Поиск по сайту
Теория урока

2.3. Типы данных в Python

Оглавление урока

Введение

В предыдущем уроке на вас обрушился, возможно, новый поток информации. Начнем с разбора понятия «тип данных» в программировании и необязательно на Python. Тип данных – это множество значений и операций, которые можно совершить над ними. Дальше углубляться не будем. Какие стандартные типы данных есть в Python?

В Python есть числа, строки, списки, словари, кортежи, множества и логический тип данных. Списки, словари, кортежи и множества мы рассмотрим позднее, по каждому из них будет несколько уроков. Итак, типы данных в Python можно классифицировать следующим образом:

  • изменяемые (множества, списки, словари);
  • неизменяемые (кортежи, строки, числа);
  • упорядоченные (списки, строки, кортежи, словари);
  • неупорядоченные (множества).

Важной особенностью языка Python является его типизация. Python относится к языкам с неявной сильной динамической типизацией. Что это означает? Неявная типизация: вам не нужно при объявлении переменной указывать конкретный тип данных, к которой она относится, как, например, в языке С++:

Пример
int a = 10       

В Python объявить переменную очень просто:

Пример
a = 10       

Под динамической типизацией понимается то, что поиск ошибок будет осуществляться на стадии выполнения программы. В языках со статической типизацией поиск ошибок выполняется на стадии компиляции. Например, в Python возможно присвоить одной переменной сначала объект одного типа данных, а потом другого:

Пример
a = "Hello"
a = 1       

Под сильной (или строгой) типизацией понимается то, что язык Python не позволяет смешивать типы данных. Если вы задали переменную как число, вы не сможете сложить ее со строкой:

Пример
a = 10
print('Десять = ' + a)       

Это увеличивает надежность кода, так как вам необходимо явно преобразовать число к строке:

Пример
a = 10
print('Десять = ' + str(a))       

Модель данных

Прежде чем переходить к конкретным типам данных, поверхностно рассмотрим, что такое модель данных, как создаются объекты в памяти и работу операции присваивания (=).

Чтобы объявить переменную в языке Python, необходимо указать ее имя, поставить знак присваивания (=) и написать значение, которое будет сохранено в переменной. Пример:

Пример
a = 10       

Переменной с именем a мы присвоили число десять. Целочисленное число десять является объектом, как и все в 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.

Числа

С числами в Python можно выполнять различные математические операции:

Пример
a = 5 + 6
b = (4 * 6) + 12
c = 2 ** 16 # возведение в степень
d = 3 / 2 # => 1.5       

При помощи функции round() можно округлять результат до определенного знака:

Пример
d = 10 / 6
print(round(d, 5)) # => 1.66667       

Остаток от деления можно найти при помощи оператора %:

Пример
d = 10 % 6
d # => 4       

С операторами сравнения вы уже познакомились из практики предыдущего урока.

Пример
print(10 > 5) # => True
и так далее…       

Так как язык строго типизированный, часто необходимо преобразовать строку в число. Это можно сделать при помощи функции int():

Пример
a = '100'
b = int(a)
print(type(a)) # => <class 'str'>
print(type(b)) # => <class 'int'>       

Чтобы получить двоичное или шестнадцатеричное значение числа, используются функции bin() и hex(), соответственно. Кстати, результат является строкой:

Пример
a = 16
print(bin(a)) # => 0b10000
print(hex(a)) # => 0x10       

Так же вы можете комбинировать операции и функции как угодно:

Пример
a = bin(int('100') + 20)
print(a) # => 0b1111000       

Для более сложных математических операций существует модуль math, о котором поговорим позже. Например, найдем корень из числа десять:

Пример
import math
print(math.sqrt(10))       

Подведем итог. С числами могут производиться различные математические операции и преобразования. В Python есть целые, числа с плавающей точкой и комплексные.

Строки

Строками в Python называется последовательность символов, обрамленных кавычками. Строки являются неизменяемым типом данных. Строки могут обрамляться как одинарными, так и двойными кавычками. Так же можно присвоить переменной несколько строк, для чего текст ограничивается тремя подряд кавычками:

Пример
a = 'Hello'
a = "Hello"
a = """
Несколько
Строк
"""       

Строки можно складывать (конкатенировать) в одну. О конкатенации мы поговорим позже в теме про списки.

Пример
a = 'Hello '
b = "World"
print(a + b) # => Hello World       

Строки можно умножать на число. Число указывает на количество раз, сколько строка будет повторена.

Строки в Python являются упорядоченным типом данных, как и списки, поэтому к отдельным символам можно обращаться по индексу. Индексация начинается с нуля:

Пример
a = 'Hello'
print(a[0]) # => H       

Так же можно обратиться к последнему символу, если использовать отрицательное значение. Про обратное индексирование еще вспомним в теме про списки.

Пример
a = 'Hello'
print(a[-1]) # => o       

В Python возможно сделать срез строки (про срезы будем говорить подробнее позднее):

Пример
a = 'Hello'
print(a[0:3]) # => Hel
print(a[1:]) # => ello
print(a[-3:]) # => llo
print(a[::2]) # => Hlo       

Чтобы посчитать количество символов в строке (или количество элементов в списке), используйте функцию len():

Пример
a = 'Hello'
print(len(a)) # => 5      

Уже не раз звучали понятия «функция» и «метод». В чем разница? Как правило, метод привязан к объекту конкретного типа, а функция является более универсальной и может быть применена к объектам разного типа.

Про форматирование строк вы узнаете в следующем уроке.

Булевы значения

Это самый примитивный тип данных в Python, да и в любом языке программирования, который может принимать два значения: истина (True) или лож (False). Небольшая оговорка, в Python ложными и истинными значениями считаются не только True и False.

К истинным значениям в Python относятся:

  • любое число не равно нулю;
  • любая непустая строка;
  • любой непустой объект.

К ложным значениям в Python относятся:

  • ноль (0);
  • None;
  • пустая строка;
  • пустой объект.

Чтобы проверить, является ли значение объекта ложным или истинным, используйте функцию bool():

Пример
list_a = [1, 2, 3]
list_b = []
num_a = 0
str_a = ''

print(bool(list_a)) # => True
print(bool(list_b)) # => False
print(bool(num_a)) # => False
print(bool(str_a)) # => False       

Еще ближе познакомитесь с логическим типом данных в уроке, посвященном условной конструкции if/else.

Неопределенный тип данных None

Неопределенное значение None можно отнести к отдельному типу данных. Если присвоить значение None переменной, то она будет сброшена в исходное состояние.

Списки, словаря, кортежи и множества

Это очень обширная и важная тема, о которой мы поговорим позднее и подробнее, начиная с этого урока.

Список – это последовательность разделенных запятой элементов и обрамленная квадратными скобками, например:

Пример
a = [1, 2, 3, 4, 5]
b = ["Hello", 1, 2, a]       

Кстати, такая форма создания списков (и не только) называется литеральная. Литерал в программировании – это выражение, которое создает объект.

Словарь – это упорядоченный тип данных, в котором значения хранятся в виде ключ/значение. В других языках программирования он может называться ассоциативным массивом. Выглядит он так:

Пример
c = {
    1: "Один",
    2: "Два"
}       

Обратите внимание, словарь в Python задается в фигурных скобках.

Кортеж – это тот же список, но только неизменяемый. Он выглядит так:

Пример
d = (1, 2, 3)       

То есть элементы в кортеже помещаются в круглые скобки.

Множество – неупорядоченный список уникальных элементов. Например:

Пример
e = {1, 1, 1, 2, 2, 3}
e # => {1, 2, 3}       

Элементы множества записываются в фигурных скобках через запятую.

В этом уроке мы разобрали, что такое модель данных, какие основные типы данных есть в Python, а так же начали знакомиться со списками, словарями, кортежами и множествами.

<
×
>
Раздел «Знакомство с Python»
Урок 1.1. Первое знакомство с Python
Тест 1.2. Небольшой первый тест
Урок 1.3. Переменные и комментарии в Python
Тест 1.4. Тест по основным понятиям и работе с сайтом
Урок 2.1. Погружение в Python
Тест 2.2. Второй вводный тест по Python
Урок 2.3. Типы данных в Python
Вы здесь
Урок 2.4. Форматирование строк в Python
Урок 2.5. Условная инструкция if-elif-else в Python
Урок 2.6. Преобразование и проверка типов в Python
Урок 2.7. Вызов методов цепочкой в Python
Урок 3.1. Первое знакомство с циклами в Python
Тест 3.2. Тест по циклам Python
Урок 4.1. Генерируем случайные числа на Python
Тест 4.2. Тест по модулю random Python
Урок 5.1. Структуры данных в Python
Тест 5.2. Тест по структурам Python
Урок 6.1. Списки в Python
Тест 6.2. Тест по спискам Python
Урок 6.3. Изменение списка на месте в Python
Урок 6.4. Дополнительно про списки в Python
Урок 6.5. Конкатенация и сортировка списков в Python
Тест 6.6. Заключительный тест по спискам в Python
Урок 7.1. Словари в Python
Тест 7.2. Тест по словарям Python
Урок 7.3. Словари и списки: еще глубже
Урок 7.4. Перебор элементов словаря в Python
Урок 7.5. Внутреннее устройство и сортировка словаря в Python
Урок 7.6. Методы словарей и функция len() в Python
Тест 7.7. Заключительный тест по словарям
Урок 8.1. Множества в Python
Урок 8.2. Методы и особенности множеств в Python
Урок 8.3. Отношения между множествами и операции над ними
Тест 8.4. Тест по методам множеств в Python
Тест 8.5. Тест по операциям над множествами в Python
Урок 9.1. Кортежи в Python
Урок 9.2. Более подробно о кортежах в Python
Тест 9.3. Тест по кортежам в Python
Урок 10.1. Контроль хода выполнения программы в Python
Урок 10.2. Цикл while в Python
Урок 10.3. Операторы break, continue и pass в Python
Урок 10.4. Циклы for/else и while/else в Python
Урок 10.5. Обработка исключений (try/except) в Python
Тест 10.6. Тест по циклам и управляющим конструкциям
Тест 10.7. Тест по обработке исключений
Урок 11.1. Работа с файлами в Python
Урок 11.2. Оператор with/as для работы с файлами в Python
Тест 11.3. Тест по работе с файлами в Python
Урок 12.1. Итераторы в Python
Урок 12.2. List/dict/set comprehensions (включения) в Python
Тест 12.3. Тест по включениям в Python
Урок 13.1. Основы функций в Python
Тест 13.2. Тест по основам функций в Python
Урок 13.3. Область видимости в Python
Урок 13.4. Что дальше?
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно