← Назад к вопросам
Какие знаешь стандартные библиотеки 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 мощна и охватывает большинство базовых задач. Для специализированных случаев используются сторонние пакеты.