🔹 1. Что такое тип данных?
Тип данных (data type) — это характеристика, которая определяет:
- Какие значения может принимать переменная,
- Как эти значения хранятся в памяти,
- Какие операции можно с ними выполнять,
- Сколько памяти они занимают.
💡 Проще говоря, тип данных — это «шаблон» для данных, который говорит компьютеру: «Это число», «Это текст», «Это да/нет» и т.д.
🔹 2. Зачем нужны типы данных?
- Безопасность — предотвращают выполнение недопустимых операций (например, сложить строку и число).
- Оптимизация памяти — разные типы занимают разный объём памяти.
- Производительность — процессор быстрее работает с определёнными типами.
- Читаемость кода — помогают программисту понимать, с чем он работает.
🔹 3. Общие типы данных в программировании
📌 1. Простые (примитивные) типы
- int — целые числа
- float / double — дробные числа
- bool — логические значения (True, False)
- char — один символ (в C, Java)
- void — отсутствие типа (в C, C++)
📌 2. Составные (сложные) типы
- string — строки (в Python, JS)
- array / list — массивы
- struct / object — структуры данных
- pointer — указатели (в C, C++)
📌 3. Абстрактные типы
- list, set, dict, queue, stack — коллекции
🔹 4. Типы данных в Python
Python — язык с динамической типизацией и сильной типизацией.
- ✅ Динамическая — не нужно явно указывать тип переменной.
- ✅ Сильная — нельзя сложить строку и число без преобразования.
Пример:python
12x = 5 # intx = "hello" # теперь строка — тип изменился автоматически
🔹 5. Основные типы данных в Python
1. int — целые числа
- Любые целые числа: положительные, отрицательные, ноль.
- В Python нет ограничения на размер (в отличие от C/Java).
python
a = 42
b = -7
c = 0
print(type(a)) # <class 'int'>
📌 Особенность: в Python 3 int имеет произвольную точность (ограничен только памятью).
2. float — числа с плавающей точкой
- Дробные числа, числа в экспоненциальной форме.
- Реализованы по стандарту IEEE 754 (обычно double precision — 64 бита).
python
x = 3.14
y = -0.001
z = 2.5e3 # 2500.0
print(type(x)) # <class 'float'>
⚠️ Важно: ошибка округления!python
10.1 + 0.2 == 0.3 # False!
3. bool — булевы значения
- Только два значения: True и False
- Подкласс int: True == 1, False == 0
python
flag = True
is_ready = False
print(int(True)) # 1
print(bool(1)) # True
📌 Ложные значения: False, 0, 0.0, "", [], {}, None
4. str — строки
- Последовательность символов в кавычках.
- Неизменяемый тип.
- Поддерживает Unicode (можно писать на любом языке).
python
s1 = "Привет, мир!"
s2 = 'Hello'
s3 = """Многострочная
строка"""
print(type(s1)) # <class 'str'>
🔤 Операции: конкатенация (+), умножение (*3), срезы, форматирование.
5. list — списки
- Упорядоченная изменяемая коллекция.
- Может содержать разные типы.
python
lst = [1, "hello", True, 3.14]
lst.append(42)
print(lst[0]) # 1
print(type(lst)) # <class 'list'>
📌 Индексация с 0, поддерживает срезы.
6. tuple — кортежи
- Упорядоченная неизменяемая коллекция.
- Быстрее списков, может использоваться как ключ в словаре.
python
t = (1, 2, "hello")
print(t[1]) # 2
# t[0] = 5 # Ошибка! Кортеж нельзя изменить
print(type(t)) # <class 'tuple'>
7. dict — словари
- Хранят данные в виде ключ: значение.
- Ключи — неизменяемые типы (str, int, tuple), значения — любые.
python
person = {
"name": "Alice",
"age": 30,
"is_student": False
print(person["name"]) # Alice
print(type(person)) # <class 'dict'>
🔑 Быстрый доступ по ключу (хеш-таблица).
8. set — множества
- Хранит уникальные элементы в неупорядоченном виде.
- Поддерживает математические операции: объединение, пересечение и т.д.
python
s = {1, 2, 3, 3, 2}
print(s) # {1, 2, 3}
s.add(4)
print(type(s)) # <class 'set'>
🧩 frozenset — неизменяемая версия множества.
9. NoneType — отсутствие значения
- Только одно значение: None
- Аналог null в других языках.
python
x = None
print(type(x)) # <class 'NoneType'>
✅ Используется для инициализации переменных, возврата из функций.
🔹 6. Другие типы в Python
📌 bytes и bytearray
- bytes — неизменяемая последовательность байтов.
- bytearray — изменяемая.
python
data = b"hello" # bytes
arr = bytearray(b"hello")
arr[0] = 72 # изменяем
📎 Используется для работы с бинарными данными (файлы, сеть).
📌 complex — комплексные числа
python
z = 3 + 4j
print(z.real) # 3.0
print(z.imag) # 4.0
📌 range — диапазон чисел
- Объект, представляющий последовательность чисел.
- Часто используется в циклах.
python
r = range(1, 10, 2) # 1, 3, 5, 7, 9
print(list(r)) # [1, 3, 5, 7, 9]
🔹 7. Проверка типа: type() и isinstance()
python
x = 4nt(isinstance(x, int)) # True
✅ Рекомендуется использовать isinstance() — он учитывает наследование.
🔹 8. Явное преобразование типов (type casting)
python
int("5") # 5
float(5) # 5.0
str(3.14) # "3.14"
bool(0) # False
list("abc") # ['a', 'b', 'c']
⚠️ Ошибки при невозможном преобразовании:python
1int("hello") # ValueError
🔹 9. Особенности типизации в Python
Динамическая
Тип определяется во время выполнения
Сильная
Нельзя складывать разные типы без преобразования
Всё — объект
Даже числа и функции — объекты классов
Можно создавать свои типы
Через классы (class)
🔹 10. Аннотации типов (Type Hints) — Python 3.5+
С 3.5+ можно указывать типы (для читаемости и статического анализа):
python
def greet(name: str) -> str:
return "Hello, " + name
age: int = 25
🛠 Инструменты: mypy, pyright — проверяют соответствие типов.
🔹 11. Как типы хранятся в памяти?
В Python всё — объект, и каждый объект хранит:
- Свой тип (ob_type)
- Счётчик ссылок (refcount)
- Само значение
python
import sys
print(sys.getrefcount(42)) # сколько ссылок на объект 42
💡 Малые целые числа кэшируются (от -5 до 256).
12.🔹 Основные типы данных в Python
- int — целые числа: 42, -7, 0.
Неограниченной длины (в пределах памяти). - float — дробные числа: 3.14, -0.001, 2.5e3.
Могут иметь погрешность из-за двоичного представления. - bool — логические значения: True, False.
Подтип int (True == 1, False == 0). - str — строки: "hello", 'Привет'.
Неизменяемы, поддерживают Unicode. - list — списки: [1, 2, "a"].
Упорядоченные, изменяемые, допускают дубликаты. - tuple — кортежи: (1, 2, "a").
Упорядоченные, неизменяемые, могут быть ключами в словарях. - dict — словари: {"name": "Alice", "age": 30}.
Хранят пары ключ-значение. Ключи — неизменяемые, значения — любые. - set — множества: {1, 2, 3}.
Хранят уникальные элементы, неупорядоченные, изменяемые. - frozenset — неизменяемое множество.
Может использоваться как ключ в словаре. - None — отсутствие значения: None.
Единственный экземпляр типа NoneType. - bytes — неизменяемая последовательность байтов: b"hello".
- bytearray — изменяемая версия bytes.
- complex — комплексные числа: 3+4j.
- range — диапазон чисел: range(1, 10).
🔹 13. Полезные функции
type(x) - Возвращает тип объекта
isinstance(x, T) -Проверяет, является ли x экземпляром T
dir(x) - Показывает методы и атрибуты объекта
help(str) - Показывает документацию
id(x) - Уникальный идентификатор объекта
🔹 14. Пример: анализ типа
python
x = [1, 2, 3]
print(f"Значение: {x}")
print(f"Тип: {type(x)}")
print(f"ID: {id(x)}")
print(f"Атрибуты: {dir(x)}")
🔹 15. Заключение
Типы данных — основа программирования.
В Python они гибкие, мощные и удобные. Знание типов помогает:
- Писать эффективный код,
- Избегать ошибок,
- Лучше понимать, как работает программа.
✅ Совет: всегда думай о типах, даже в динамическом языке. Это делает код надёжнее.