Python
Python — интерпретируемый язык с динамической типизацией, ставший стандартом для скриптов, веб-бэкендов, анализа данных и машинного обучения.
Что такое Python
Python — интерпретируемый язык программирования с динамической типизацией, созданный Гвидо ван Россумом в 1991 году. Ставка сделана на читаемость: блоки выделяются отступами, синтаксис минимален, стандартная библиотека закрывает большую часть бытовых задач.
Где применяется:
- Data Science и ML — PyTorch, pandas, NumPy, scikit-learn. Здесь у Python фактическая монополия.
- Веб-бэкенд — Django, FastAPI, Flask.
- Автоматизация — от разбора логов до деплоя.
- Парсинг — requests, BeautifulSoup, Scrapy.
- Боты — Telegram-боты на aiogram или python-telegram-bot.
Плата за удобство — скорость: чистый Python на порядки медленнее C. На практике это редко мешает, потому что тяжёлые части (NumPy, PyTorch) написаны на C/C++ и CUDA, а Python только ими управляет.
split — разбить строку
str.split() разбивает строку по разделителю и возвращает список:
"a,b,c".split(",") # ['a', 'b', 'c']
"один два три".split() # ['один', 'два', 'три'] — по любым пробелам
"a,b,c".split(",", 1) # ['a', 'b,c'] — не больше одного разбиения
"2026-07-17".split("-") # ['2026', '07', '17']
"a\nb\n".splitlines() # ['a', 'b'] — по строкам
Обратная операция — join, конкатенация элементов через разделитель:
",".join(["a", "b", "c"]) # 'a,b,c'
Две частые ловушки: "".split(",") возвращает [''], а не пустой список; split() без аргумента и split(" ") ведут себя по-разному на двойных пробелах.
map — применить функцию к каждому элементу
map(func, iterable) применяет функцию к каждому элементу и возвращает ленивый итератор:
list(map(int, ["1", "2", "3"])) # [1, 2, 3]
list(map(str.upper, ["a", "b"])) # ['A', 'B']
list(map(lambda x: x * 2, [1, 2, 3])) # [2, 4, 6]
list(map(max, [1, 5], [3, 2])) # [3, 5] — два итерируемых сразу
Ключевое слово — ленивый: пока результат не обёрнут в list() или не пройден циклом, не вычисляется ничего. Это экономит память на больших данных, но регулярно удивляет: «почему map ничего не напечатал».
В Python вместо map чаще пишут list comprehension — читается лучше:
[x * 2 for x in [1, 2, 3]] # [2, 4, 6]
map остаётся уместен, когда функция уже есть и лямбда не нужна: map(int, values) короче и быстрее, чем [int(v) for v in values].
pandas — таблицы в памяти
pandas — библиотека для работы с табличными данными. Базовый объект — DataFrame: таблица со строками, именованными колонками и типами.
import pandas as pd
df = pd.read_csv("orders.csv")
df = df[df["amount"] > 1000] # фильтр
df["month"] = df["created_at"].str[:7] # новая колонка
stats = df.groupby("month")["amount"].sum() # агрегация
df.to_parquet("orders.parquet") # выгрузка
По сути это SQL-подобные операции, но в памяти процесса. Отсюда главное ограничение: DataFrame целиком живёт в RAM и занимает в разы больше, чем исходный файл. Для десятков гигабайт берут Polars, DuckDB или Spark.
Python на сервере (VDS/VPS)
Скрипты, парсеры и боты обычно живут на VPS — им не нужен GPU, хватает 1 vCPU и 1 ГБ RAM. Схема запуска:
python3 -m venv .venv # изолированное окружение
source .venv/bin/activate
pip install -r requirements.txt
Дальше — юнит systemd, чтобы процесс поднимался после перезагрузки и падений. Веб-приложение ставят за Gunicorn/WSGI и Nginx. ML-нагрузка переезжает на сервер с GPU, где решает не частота CPU, а объём VRAM.
Связанные термины
- Типы данных и типизация — динамическая типизация, аннотации и mypy
- Конкатенация — join и f-строки
- Регулярные выражения — модуль re
- VPS — где обычно живут скрипты и боты
- Telegram-боты — популярный сценарий для Python
- PyTorch — основной ML-фреймворк на Python
Готовы запустить GPU-задачу?
Запустить GPU-сервер