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

Какие знаешь стандартные библиотеки Python?

2.0 Middle🔥 191 комментариев
#Python Core

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

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

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

Стандартная библиотека Python

Python имеет мощную встроенную библиотеку. Рассмотрю самые важные модули:

Работа с данными

json — парсинг и сериализация JSON.

import json

# Сериализация
data = {'name': 'John', 'age': 30}
json_string = json.dumps(data)

# Десериализация
parsed = json.loads(json_string)

# Работа с файлами
with open('data.json', 'w') as f:
    json.dump(data, f)

with open('data.json', 'r') as f:
    loaded = json.load(f)

csv — работа с CSV файлами.

import csv

# Запись
with open('data.csv', 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=['name', 'age'])
    writer.writeheader()
    writer.writerow({'name': 'John', 'age': 30})

# Чтение
with open('data.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row['name'])

datetime — работа с датой и временем.

from datetime import datetime, timedelta, timezone

# Текущая дата/время
now = datetime.now(timezone.utc)

# Парсинг строки
dt = datetime.fromisoformat('2024-03-22T10:30:00+00:00')

# Арифметика с датами
tomorrow = now + timedelta(days=1)

# Форматирование
formatted = now.strftime('%Y-%m-%d %H:%M:%S')

Коллекции и структуры данных

collections — специализированные контейнеры.

from collections import Counter, defaultdict, deque, namedtuple

# Counter — подсчёт элементов
data = ['a', 'b', 'a', 'c', 'a']
counter = Counter(data)  # {'a': 3, 'b': 1, 'c': 1}

# defaultdict — словарь с дефолтным значением
grouped = defaultdict(list)
grouped['users'].append('John')

# deque — быстрая очередь
queue = deque([1, 2, 3])
queue.appendleft(0)  # [0, 1, 2, 3]

# namedtuple — именованный кортеж
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(p.x)  # 10

functools — функциональное программирование.

from functools import lru_cache, wraps, reduce

# LRU кеш
@lru_cache(maxsize=128)
def fibonacci(n: int) -> int:
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

# Декоратор
def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        print(f"Calling {func.__name__}")
        return func(*args, **kwargs)
    return wrapper

# reduce
from functools import reduce
result = reduce(lambda x, y: x + y, [1, 2, 3, 4])  # 10

Файлы и пути

pathlib — объектная работа с путями (вместо os.path).

from pathlib import Path

# Создание пути
p = Path('data') / 'file.txt'

# Проверки
if p.exists():
    if p.is_file():
        content = p.read_text()
    elif p.is_dir():
        files = list(p.glob('*.txt'))

# Создание/удаление
p.parent.mkdir(parents=True, exist_ok=True)
p.write_text('Hello')
p.unlink()  # удалить файл

os и sys — взаимодействие с ОС.

import os
import sys

# Переменные окружения
db_url = os.getenv('DATABASE_URL', 'default')
os.environ['VAR'] = 'value'

# Информация о системе
print(sys.version)
print(sys.platform)
print(sys.argv)  # аргументы командной строки

Многопоточность и асинхронность

threading — многопоточность.

import threading
from threading import Lock

def worker():
    print("Working...")

thread = threading.Thread(target=worker)
thread.start()
thread.join()  # ждать завершения

# Синхронизация
lock = Lock()
with lock:
    # критическая секция
    pass

asyncio — асинхронное программирование.

import asyncio

async def fetch_data(url: str):
    await asyncio.sleep(1)
    return f"Data from {url}"

async def main():
    result = await fetch_data('http://example.com')
    print(result)

asyncio.run(main())

HTTP и сеть

urllib — встроенный HTTP клиент.

from urllib.request import urlopen
from urllib.parse import urlencode

# GET запрос
with urlopen('https://example.com') as response:
    data = response.read()

# Построение URL
params = urlencode({'name': 'John', 'age': 30})
url = f'https://example.com?{params}'

Логирование

logging — логирование приложения.

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

handler = logging.FileHandler('app.log')
formatter = logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
handler.setFormatter(formatter)
logger.addHandler(handler)

logger.info('Application started')
logger.error('An error occurred', exc_info=True)

Тестирование

unittest — встроенный фреймворк для тестов.

import unittest

class TestCalculator(unittest.TestCase):
    def test_addition(self):
        self.assertEqual(2 + 2, 4)
    
    def test_division_by_zero(self):
        with self.assertRaises(ZeroDivisionError):
            1 / 0

if __name__ == '__main__':
    unittest.main()

Стандартная библиотека Python мощна и охватывает большинство базовых задач. Для специализированных случаев используются сторонние пакеты.