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

7. Типы данных в 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, чтобы определить идентификатор, на который ссылается переменная. Не привязывайтесь к конкретным числам, у вас они будут другими. Обратите внимание, что после присвоения поменялся идентификатор, на который ссылается переменная. Мы об этом еще вспомним, когда будем говорить про копирование списков. А еще вспомним, когда будем знакомиться с аргументами и параметрами функций в Python.

Чтобы узнать тип переменной, воспользуйтесь функцией 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Знакомство с Python
Написание модулей в PythonЗнакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Продолжаем написание классов в PythonЗнакомство с Python
Основы функций в PythonЗнакомство с Python
Структуры данных в PythonЗнакомство с Python
Модули в PythonЗнакомство с Python
Погружение в PythonЗнакомство с Python
Функциональное программирование: map, filter и reduceЗнакомство с Python
<
×
>
Раздел «Знакомство с Python»
1. УРОК: Первое знакомство с Python
2. ТЕСТ: Небольшой первый тест по Python
3. УРОК: Переменные и комментарии в Python
4. ТЕСТ: Тест по основным понятиям и работе с сайтом
Самые основы
5. УРОК: Погружение в Python
6. ТЕСТ: Второй вводный тест по Python
УРОК 7. Типы данных в Python
Вы здесь
8. УРОК: Форматирование строк в Python
9. УРОК: Условная инструкция if-elif-else в Python
10. УРОК: Преобразование и проверка типов в Python
11. УРОК: Вызов методов цепочкой в Python
Циклы
12. УРОК: Первое знакомство с циклами в Python
13. ТЕСТ: Тест по циклам Python
Немного рандома
14. УРОК: Генерируем случайные числа на Python
15. ТЕСТ: Тест по модулю random Python
Структуры данных
16. УРОК: Структуры данных в Python
17. ТЕСТ: Тест по структурам Python
Списки
18. УРОК: Списки в Python
19. ТЕСТ: Тест по спискам Python
20. УРОК: Изменение списка на месте в Python
21. УРОК: Дополнительно про списки в Python
22. УРОК: Конкатенация и сортировка списков в Python
23. ТЕСТ: Заключительный тест по спискам в Python
Словари
24. УРОК: Словари в Python
25. ТЕСТ: Тест по словарям Python
26. УРОК: Словари и списки: еще глубже
27. УРОК: Перебор элементов словаря в Python
28. УРОК: Внутреннее устройство и сортировка словаря в Python
29. УРОК: Методы словарей и функция len() в Python
30. ТЕСТ: Заключительный тест по словарям
Множества
31. УРОК: Множества в Python
32. УРОК: Методы и особенности множеств в Python
33. УРОК: Отношения между множествами и операции над ними
34. ТЕСТ: Тест по методам множеств в Python
35. ТЕСТ: Тест по операциям над множествами в Python
Кортежи
36. УРОК: Кортежи в Python
37. УРОК: Более подробно о кортежах в Python
38. ТЕСТ: Тест по кортежам в Python
Снова циклы и немного исключений
39. УРОК: Контроль хода выполнения программы в Python
40. УРОК: Цикл while в Python
41. УРОК: Операторы break, continue и pass в Python
42. УРОК: Циклы for/else и while/else в Python
43. УРОК: Обработка исключений (try/except) в Python
44. ТЕСТ: Тест по циклам и управляющим конструкциям
45. ТЕСТ: Тест по обработке исключений
Работаем с файлами
46. УРОК: Работа с файлами в Python
47. УРОК: Оператор with/as для работы с файлами в Python
48. ТЕСТ: Тест по работе с файлами в Python
Итераторы
49. УРОК: Итераторы в Python
50. УРОК: List/dict/set comprehensions (включения) в Python
51. ТЕСТ: Тест по включениям в Python
Функции
52. УРОК: Основы функций в Python
53. ТЕСТ: Тест по основам функций в Python
54. УРОК: Область видимости в Python
55. ТЕСТ: Тест по области видимости в Python
56. УРОК: Замыкания и оператор nonlocal в Python
57. ТЕСТ: Тест по замыканиям и nonlocal в Python
58. УРОК: Аргументы и параметры функций, операторы * и ** в Python
59. ТЕСТ: Тест по аргументам и параметрам функций в Python
60. ТЕСТ: Тест по операторам * и ** в Python
61. УРОК: Анонимные функции: выражения lambda
62. УРОК: Функциональное программирование: map, filter и reduce
63. ТЕСТ: Тест по парадигме функционального программирования
64. УРОК: Генераторы и оператор yield в Python
65. ТЕСТ: Тест по генераторным функциям и выражениям
Модули
66. УРОК: Модули в Python
67. УРОК: Написание модулей в Python
68. УРОК: Пакеты модулей в Python
69. УРОК: Еще о возможностях модулей в Python
70. ТЕСТ: Тест по модулям и пакетам в Python
Объектно-ориентированное программирование
71. УРОК: Основы объектно-ориентированного программирования (ООП) в Python
72. ТЕСТ: Тест по основам ООП в Python
73. УРОК: Основы написания классов в Python
74. УРОК: Продолжаем написание классов в Python
75. УРОК: Более глубокое изучение классов в Python
76. УРОК: Что дальше?
Впервые на сайте Codebra?

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

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

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

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

Закрыть окно