← Назад к вопросам

Какие типы объектов существуют в Python?

1.0 Junior🔥 91 комментариев
#Python и программирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Типы объектов в Python

Понимание типов объектов — фундамент для работы с данными и аналитике на Python. Вот полный обзор типов, которые использую в своей работе.

1. Простые типы (Primitive Types)

int — целые числа

# Обычные целые числа
age = 30
user_id = 12345
negative = -100

# Python поддерживает числа произвольной длины
big_number = 999999999999999999999999
print(type(big_number))  # <class 'int'>
print(big_number + 1)    # работает без overflow

# Операции
print(15 // 2)    # 7 (целочисленное деление)
print(15 % 2)     # 1 (остаток от деления)
print(2 ** 10)    # 1024 (возведение в степень)

float — вещественные числа

price = 99.99
average = 3.14159
scientific = 1.5e-3  # 0.0015

# Осторожно с precision!
print(0.1 + 0.2)           # 0.30000000000000004 — не 0.3!
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2'))  # Decimal('0.3') — точно

# Операции
print(10.5 / 3)     # 3.5
print(abs(-5.5))    # 5.5 (модуль)
print(round(3.7))   # 4 (округление)

bool — логические значения

is_active = True
is_deleted = False

# Сравнения возвращают bool
result = 5 > 3  # True
result = 5 == 3  # False

# Логические операторы
print(True and False)   # False
print(True or False)    # True
print(not True)         # False

# В Python, некоторые значения "falsy":
print(bool(0))          # False
print(bool(''))         # False (пустая строка)
print(bool([]))         # False (пустой список)
print(bool(None))       # False

str — строковые данные (для аналитика это часто встречается!)

name = "Aleksandr"
email = "aleksand@example.com"

# Строки immutable (неизменяемые)
s = "hello"
# s[0] = 'H'  # ошибка: TypeError

# Методы для работы со строками
print(name.lower())             # "aleksandr"
print(name.upper())             # "ALEKSANDR"
print(email.split('@'))         # ['aleksand', 'example.com']
print('  spaces  '.strip())     # 'spaces' (удаляет пробелы)
print('hello'.replace('l', 'L')) # 'heLLo'

# Проверки
print('alex' in email)          # True
print(email.startswith('aleksand'))  # True
print(email.endswith('.com'))   # True

# F-string для форматирования (рекомендуется)
user_id = 123
message = f"User {user_id} logged in at {datetime.now()}"  # очень удобно!

None — отсутствие значения

optional_value = None
result = function_that_returns_nothing()  # None

# Проверка
if result is None:
    print("No value returned")

# В SQL это аналог NULL
# В numpy это преобразуется в NaN (для float) или остаётся None

2. Типы контейнеров (Collections)

list — изменяемый список

users = ['Alice', 'Bob', 'Charlie']  # список строк
prices = [9.99, 19.99, 29.99]       # список чисел
mixed = [1, 'text', 3.14, True]     # смешанные типы

# Доступ по индексу (начиная с 0)
first = users[0]        # 'Alice'
last = users[-1]        # 'Charlie' (отрицательный индекс = с конца)

# Срезы (slicing)
users[1:3]              # ['Bob', 'Charlie']
users[:2]               # ['Alice', 'Bob']
users[::2]              # ['Alice', 'Charlie'] (каждый второй)

# Изменение
users.append('Diana')   # добавить в конец
users.insert(1, 'Eve')  # вставить в позицию
users.remove('Bob')     # удалить элемент
users.pop(0)            # удалить и вернуть элемент
users.sort()            # сортировка на месте

# Полезные операции
print(len(users))       # 4 (количество элементов)
print('Alice' in users) # True (проверка наличия)
print(users.count('Alice'))  # 1 (количество вхождений)

tuple — неизменяемый кортеж

coordinates = (10, 20)       # координаты (x, y)
rgb_color = (255, 128, 0)    # цвет RGB
immutable_list = (1, 2, 3)   # неизменяемый список

# Распаковка (очень полезно!)
x, y = coordinates      # x=10, y=20
r, g, b = rgb_color     # r=255, g=128, b=0

# Нельзя изменять
# coordinates[0] = 15   # ошибка!

# Полезны как ключи в словарях
position_to_color = {
    (0, 0): 'white',
    (1, 1): 'black'
}

dict — словарь (key-value)

user = {
    'id': 123,
    'name': 'Alice',
    'email': 'alice@example.com',
    'is_active': True
}

# Доступ
user['name']            # 'Alice'
user.get('age', 25)     # 25 (default если ключа нет)

# Модификация
user['age'] = 30        # добавить или изменить
del user['is_active']   # удалить ключ
user.update({'city': 'Moscow'})  # добавить несколько

# Итерация
for key, value in user.items():
    print(f"{key}: {value}")

# Полезные методы
user.keys()             # dict_keys(['id', 'name', ...])
user.values()           # dict_values([123, 'Alice', ...])
user.items()            # dict_items([('id', 123), ...])

set — множество (без дубликатов)

user_ids = {1, 2, 3, 3, 3}  # дубликаты автоматически удаляются
print(user_ids)             # {1, 2, 3}

# Операции множеств
group1 = {1, 2, 3}
group2 = {3, 4, 5}

print(group1 & group2)      # {3} (пересечение)
print(group1 | group2)      # {1,2,3,4,5} (объединение)
print(group1 - group2)      # {1, 2} (разность)
print(group1 ^ group2)      # {1,2,4,5} (симметричная разность)

# Проверки
print(1 in group1)          # True
print(len(group1))          # 3
print(group1.issubset(group2))  # False

3. Типы для работы с данными (Data Types)

pandas.DataFrame — таблица данных

import pandas as pd

df = pd.DataFrame({
    'user_id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie'],
    'spent': [100.0, 250.0, 150.0]
})

# Это аналог таблицы в БД
print(df.shape)             # (3, 3) — 3 строки, 3 колонки
print(df.dtypes)            # типы каждой колонки
print(df['spent'].sum())    # 500.0 — сумма по колонке

# Фильтрация
high_spenders = df[df['spent'] > 150]  # df.spent > 150

# Группировка
df.groupby('name')['spent'].sum()  # сумма по группам

numpy.ndarray — многомерный массив

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
matrix = np.array([[1, 2], [3, 4]])  # 2D массив

print(arr.shape)            # (5,)
print(matrix.shape)         # (2, 2)

# Векторизованные операции (очень быстро!)
print(arr * 2)              # [2, 4, 6, 8, 10]
print(arr + arr)            # [2, 4, 6, 8, 10]
print(np.mean(arr))         # 3.0

4. Типы функций (Callables)

function — обычная функция

def calculate_ltv(revenue, customer_lifetime_days):
    """Расчёт lifetime value"""
    return revenue / customer_lifetime_days * 365

ltv = calculate_ltv(1000, 100)  # 3650
print(type(calculate_ltv))      # <class 'function'>

lambda — анонимная функция

# Вместо:
def add(a, b):
    return a + b

# Пишем:
add = lambda a, b: a + b

# Часто используется в map/filter/sorted
numbers = [3, 1, 4, 1, 5]
print(sorted(numbers, key=lambda x: -x))  # [5, 4, 3, 1, 1] (по убыванию)
print(list(map(lambda x: x**2, numbers)))  # [9, 1, 16, 1, 25]

5. Определённые типы (Custom Types)

class — пользовательский класс

class User:
    def __init__(self, id, name, email):
        self.id = id
        self.name = name
        self.email = email
    
    def is_valid_email(self):
        return '@' in self.email

user = User(1, 'Alice', 'alice@example.com')
print(type(user))               # <class '__main__.User'>
print(isinstance(user, User))   # True
print(user.is_valid_email())    # True

6. Специальные типы

datetime — дата и время

from datetime import datetime, date, timedelta

now = datetime.now()             # текущее время
today = date.today()             # текущая дата
specific = datetime(2024, 1, 15, 10, 30)  # конкретная дата/время

# Операции
future = now + timedelta(days=7)  # неделю спустя
diff = (future - now).days        # количество дней

# Форматирование
print(now.strftime("%Y-%m-%d"))   # '2024-01-15'

Decimal — точные вычисления (для финансов!)

from decimal import Decimal

price = Decimal('99.99')
quantity = Decimal('3')
total = price * quantity          # Decimal('299.97') — точно!

# Важно для работы с деньгами!
tax_rate = Decimal('0.1')
tax = total * tax_rate            # Decimal('29.997')

Таблица типов

Тип         Изменяемый?  Примеры         Использование
─────────────────────────────────────────────────────────
int         Нет          123, -45        Количество, ID
float       Нет          3.14, 99.99     Цены, проценты
str         Нет          'hello', "world" Текст, email
bool        Нет          True, False     Условия
None        Нет          None            Отсутствие значения
list        Да           [1, 2, 3]       Коллекции элементов
tuple       Нет          (1, 2, 3)       Неизменяемые пары
dict        Да           {'a': 1}        Key-value данные
set         Да           {1, 2, 3}       Уникальные значения
DataFrame   Да           pd.DataFrame()  Табличные данные
ndarray     Да           np.array()      Числовые вычисления

Проверка типов

# type() — точный тип
print(type(5))                  # <class 'int'>
print(type(5.0))               # <class 'float'>

# isinstance() — проверка по иерархии (лучше!)
print(isinstance(5, int))       # True
print(isinstance(5, (int, float)))  # True (один из типов)

# В Python, всё — объект!
print(type(type))               # <class 'type'>

Практический совет для аналитика

В аналитике обычно работаешь с:

  • int — ID, счётчики
  • float — цены, проценты, метрики
  • str — имена, email, категории
  • datetime — дата/время событий
  • list/dict — структурирование данных
  • pandas.DataFrame — основной инструмент для табличных данных
  • Decimal — если работаешь с финансами

Не нужно знать все тонкости, но эти типы встречаются в 95% задач.

Какие типы объектов существуют в Python? | PrepBro