0 знаков
7. Типы данных в Python
Кратко- В программировании тип данных представляет множество значений и операций, которые можно совершить над ним.
- В Python есть стандартные типы данных: числа, строки, списки, словари, кортежи, множества и логический тип данных.
- Python относится к языкам с неявной сильной динамической типизацией.
- Модель данных включает объекты, данные и отношения между ними.
- Операция присваивания в Python создает ссылку между переменной и объектом, который имеет тип, идентификатор и значение.
- Числа в Python могут выполнять различные математические операции и преобразования.
- Строки в Python являются неизменяемым типом данных и могут быть сложены, умножены на число и проиндексированы.
- Булевы значения являются самым примитивным типом данных в Python и могут принимать два значения: истинное или ложное.
- Неопределенный тип данных None может быть отнесен к отдельному типу данных и может сбрасывать переменную в исходное состояние.
Введение
В предыдущем уроке на вас обрушился, возможно, новый поток информации. Начнем с разбора понятия «тип данных» в программировании и необязательно на Python. Тип данных – это множество значений и операций, которые можно совершить над ними. Дальше углубляться не будем. Какие стандартные типы данных есть в Python?
В Python есть числа, строки, списки, словари, кортежи, множества и логический тип данных. Списки, словари, кортежи и множества мы рассмотрим позднее, по каждому из них будет несколько уроков. Итак, типы данных в Python можно классифицировать следующим образом:
- изменяемые (множества, списки, словари);
- неизменяемые (кортежи, строки, числа);
- упорядоченные (списки, строки, кортежи, словари);
- неупорядоченные (множества).
Важной особенностью языка Python является его типизация. Python относится к языкам с неявной сильной динамической типизацией. Что это означает? Неявная типизация: вам не нужно при объявлении переменной указывать конкретный тип данных, к которой она относится, как, например, в языке С++:
int a = 10;
В Python объявить переменную очень просто:
a = 10
Под динамической типизацией понимается то, что поиск ошибок будет осуществляться на стадии выполнения программы. В языках со статической типизацией поиск ошибок выполняется на стадии компиляции. Например, в Python возможно присвоить одной переменной сначала объект одного типа данных, а потом другого. В примере ниже мы присваиваем сначала строку переменной a
, затем - число:
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
Числа можно сравнивать между собой:
a == b
– проверяет, равны ли оба операнда и возвращает истину, если это так;a != b
– проверяет, равны ли оба операнда и возвращает истину, если они различны;a > b
– возвращает истину, если левый операнд (a), больше правого операнда (b);a < b
– возвращает истину, если левый операнд (a), меньше правого операнда (b);a >= b
– возвращает истину, если левый операнд (a), больше или равен правому операнду (b);a <= b
– возвращает истину, если левый операнд (a), меньше или равен правому операнду (b).
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. Познакомимся с методами форматирования строк и выберем удобный для себя.
Тест
Похожие уроки Codebra
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ