Базовые типы
В прошлом уроке имя было биркой, а значение — жетоном. У жетона есть ещё одна черта — его вид.
Представьте, что на каждом жетоне, кроме значения, выбито клеймо: «целое число», «дробное число» или «текст». От клейма зависит, что с жетоном можно делать.
Давайте посмотрим, как это проявляется в коде. Один и тот же оператор + даёт разные результаты для разных значений. Цифры без кавычек складываются как числа, а в кавычках — склеиваются как текст:
print(7 + 3) # 10
print("7" + "3") # 73
print(type(7)) # <class 'int'>
print(type("7")) # <class 'str'>Разберём пример по строкам:
7 + 3складывает два числа и печатает10."7" + "3"склеивает две строки и печатает73.type(7)возвращает тип числа7, иprintвыводит его как<class 'int'>.type("7")возвращает тип строки:<class 'str'>.
Что такое тип
Разница в типе значения: 7 — это целое число, тип int, а "7" — текст, тип str. Тип определяет, какие операции значение поддерживает и как они работают. В нашей картинке тип — то самое клеймо на жетоне.
Функция type() возвращает тип объекта, а print выводит его в виде <class '…'>. Значение, записанное прямо в коде, — 7, "7", 2.5 — называют литералом.
Пять базовых типов
| Тип | Примеры | Что хранит |
|---|---|---|
int | 0, 42, -7 | целое число |
float | 2.5, -0.1, 3.0 | дробное число |
str | "hi", 'hi', "" | текст |
bool | True, False | логическое значение |
NoneType | None | отсутствие значения |
Разберём каждый тип подробнее.
Числа int и float
Число с точкой — всегда float, даже если дробной части нет: 3.0 и 3 — значения разных типов.
Если в сложении, вычитании или умножении участвуют int и float, результат будет float. Так 2 * 2.5 даёт 5.0, а 2 * 2.0 — 4.0. Те же действия над двумя int дают int: 7 * 3 — это 21.
Строки str
Текст в Python называют строкой, её тип — str. Строку записывают в двойных или одинарных кавычках, и "hi" с 'hi' — одно и то же значение. В коде курса мы пишем двойные кавычки. Пустые кавычки "" дают пустую строку.
Логический тип bool
Тип bool хранит одно из двух логических значений: True или False. Оба пишутся с заглавной буквы. Такое значение отвечает на вопрос «да или нет»: открыт ли магазин, есть ли товар на складе.
Значение None
Значение None означает, что значения нет. Его возвращает, например, функция без return. Тип None называется NoneType, и других значений у этого типа нет.
Тип принадлежит значению
Вернёмся к биркам. Клеймо выбито на жетоне, а не на бирке. Поэтому переменная в Python не имеет своего типа. Тип есть у объекта, на который она ссылается, и после нового присваивания он может стать другим:
x = 42
print(type(x)) # <class 'int'>
x = "forty-two"
print(type(x)) # <class 'str'>
x = None
print(x, type(x)) # None <class 'NoneType'>Давайте разберём по шагам:
x = 42привязывает биркуxк целому числу, иtype(x)печатает<class 'int'>.x = "forty-two"перевязываетxна строку, и тот же вызов печатает<class 'str'>.x = NoneперевязываетxнаNone, иprintвыводитNone <class 'NoneType'>.
type(x) смотрит на объект, на который x ссылается в момент вызова. Сам объект свой тип не меняет: 42 остаётся int, а новое присваивание связывает x с другим объектом. Клеймо на жетоне нельзя перебить — можно только перевязать бирку на другой жетон.
Этот вопрос часто задают на собеседовании: «Есть ли у переменной в Python тип?» Ответ: тип есть у объекта, а переменная лишь ссылается на него. Одно и то же имя может ссылаться сначала на int, потом на str.
Частая ошибка
Логическое значение написали со строчной буквы:
is_open = true # ✗
print(is_open)NameError: name 'true' is not defined. Did you mean: 'True'?Python различает регистр букв, поэтому true для него — обычное имя переменной, а такой переменной нет. Значения True, False и None пишутся только с заглавной буквы.
Главное
- Тип определяет, какие операции поддерживает значение:
7 + 3даёт10, а"7" + "3"—"73". - Базовые типы —
int,float,str,boolиNoneType;type()возвращает тип объекта. intвместе сfloatв арифметике даютfloat, а число с точкой — всегдаfloat.- Тип есть у объекта, а не у переменной: после нового присваивания
type(x)может стать другим.
Подпишись, чтобы пройти курс
Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.