Стандартная библиотека Python
Стандартная библиотека Python представляет собой обширный набор встроенных модулей и пакетов, которые предоставляются вместе с интерпретатором Python. Она обеспечивает разработчиков мощными инструментами для решения типовых задач, таких как работа с файлами, обработка данных, взаимодействие с сетью, автоматизация системных процессов, анализ текста и сериализация данных. Использование стандартной библиотеки снижает зависимость от сторонних библиотек, повышает переносимость кода и ускоряет процесс разработки. Ключевые концепции включают модули (самостоятельные блоки кода), пакеты (коллекции модулей), синтаксис Python, встроенные структуры данных (списки, словари, множества), алгоритмы и принципы объектно-ориентированного программирования. Освоение стандартной библиотеки позволяет разрабатывать модульный, читаемый и устойчивый к ошибкам код, эффективно использовать обработку исключений, оптимизировать производительность и строить масштабируемые backend-решения.
Практический пример — анализ логов сервера для выявления и подсчета ошибок. В этом сценарии используются модули os
для операций с файлами, datetime
для работы с датами и временем, re
для поиска по регулярным выражениям, collections.Counter
для подсчета частоты ошибок и json
для сохранения результатов. Каждый модуль выполняет свою роль: os
управляет файловой системой, datetime
фиксирует временные метки, re
ищет ошибки в тексте, Counter
агрегирует данные, а json
сохраняет их в удобном формате. Такой подход обеспечивает модульность, читаемость и расширяемость кода. Применение этой схемы напрямую актуально для мониторинга серверов, автоматической аналитики логов и генерации отчетов для backend-разработки, что позволяет получать ценные данные для принятия решений.
Example
pythonimport os
import datetime
import re
import json
from collections import Counter
from math import ceil
log_file = "server.log"
backup_file = f"backup_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.log"
try:
with open(log_file, 'r') as f:
lines = f.readlines()
error_lines = [line for line in lines if re.search(r'ERROR', line)]
error_count = Counter([line.split()[1] for line in error_lines])
with open("error_summary.json", 'w') as f:
json.dump(error_count, f, indent=4)
os.rename(log_file, backup_file)
backups_needed = ceil(len(lines) / 1000)
print(f"Необходимое количество резервных копий: {backups_needed}")
except FileNotFoundError as e:
print(f"Файл не найден: {e}")
except Exception as e:
print(f"Неожиданная ошибка: {e}")
📊 Comprehensive Reference
Module | Function | Description | Syntax | Example | Notes |
---|---|---|---|---|---|
os | rename | Переименование файлов | os.rename(src,dst) | os.rename("old.txt","new\.txt") | Файловые операции |
sys | exit | Завершение интерпретатора | sys.exit(\[status]) | sys.exit(1) | Завершение программы |
math | ceil | Округление вверх | math.ceil(x) | math.ceil(3.4) | Математические операции |
math | sqrt | Вычисление квадратного корня | math.sqrt(x) | math.sqrt(16) | Математические операции |
datetime | now | Текущие дата и время | datetime.datetime.now() | datetime.datetime.now() | Работа с датой/временем |
datetime | strftime | Форматирование даты | datetime.strftime(format) | datetime.datetime.now().strftime("%Y-%m-%d") | Форматирование |
re | search | Поиск по регулярному выражению | re.search(pattern,string) | re.search(r"ERROR","log") | Анализ текста |
re | sub | Замена по регулярному выражению | re.sub(pattern,repl,string) | re.sub(r"\d+","", "abc123") | Очистка данных |
json | dump | Запись JSON | json.dump(obj,fp) | json.dump(data,f) | Сериализация |
json | load | Чтение JSON | json.load(fp) | data=json.load(f) | Десериализация |
collections | Counter | Подсчет элементов | collections.Counter(iterable) | Counter(\["a","b","a"]) | Анализ данных |
itertools | chain | Объединение итераторов | itertools.chain(*iterables) | list(chain(\[1,2],\[3,4])) | Эффективная итерация |
functools | reduce | Редукция последовательности | functools.reduce(func,seq) | reduce(lambda x,y:x+y,\[1,2,3]) | Функциональное программирование |
random | randint | Случайное число | random.randint(a,b) | random.randint(1,10) | Случайности |
heapq | heappush | Добавление в кучу | heapq.heappush(heap,item) | heappush(heap,5) | Приоритетная очередь |
heapq | heappop | Удаление наименьшего элемента | heapq.heappop(heap) | heappop(heap) | Приоритетная очередь |
threading | Thread | Создание потока | threading.Thread(target=func) | threading.Thread(target=my_func) | Многопоточность |
subprocess | run | Выполнение внешней команды | subprocess.run(args) | subprocess.run(\["ls","-l"]) | Системные вызовы |
time | sleep | Приостановка выполнения | time.sleep(seconds) | time.sleep(2) | Контроль времени |
pathlib | Path | Работа с путями | Path("file.txt") | Path("data.txt").exists() | Файловые пути |
uuid | uuid4 | Создание уникального ID | uuid.uuid4() | uuid.uuid4() | Уникальные идентификаторы |
base64 | b64encode | Кодирование Base64 | base64.b64encode(data) | base64.b64encode(b"data") | Кодирование |
hashlib | sha256 | Создание SHA-256 хеша | hashlib.sha256(data) | hashlib.sha256(b"data").hexdigest() | Безопасность |
copy | deepcopy | Глубокое копирование | copy.deepcopy(obj) | copy.deepcopy(mylist) | Избегание ссылок |
gzip | open | Открытие gzip файлов | gzip.open(filename) | gzip.open("file.gz") | Сжатие |
zipfile | ZipFile | Работа с zip архивами | zipfile.ZipFile(file) | with ZipFile("a.zip") as z: pass | Сжатие |
configparser | ConfigParser | Чтение конфигураций | configparser.ConfigParser() | config.read("config.ini") | Конфигурации |
message_from_string | Парсинг email | email.message_from_string(string) | msg=email.message_from_string(raw) | ||
urllib | request.urlopen | Открытие URL | urllib.request.urlopen(url) | urllib.request.urlopen("[http://example.com") | HTTP-запрос](http://example.com%22%29 |
socket | socket | Создание сокета | socket.socket() | s=socket.socket() | Сетевые операции |
logging | basicConfig | Настройка логирования | logging.basicConfig(level) | logging.basicConfig(level=logging.INFO) | Логи |
argparse | ArgumentParser | CLI аргументы | argparse.ArgumentParser() | parser=argparse.ArgumentParser() | Командная строка |
shutil | copy | Копирование файлов | shutil.copy(src,dst) | shutil.copy("a.txt","b.txt") | Файловые операции |
pprint | pprint | Красивый вывод | pprint.pprint(obj) | pprint.pprint(data) | Отображение данных |
statistics | mean | Среднее значение | statistics.mean(data) | statistics.mean(\[1,2,3]) | Статистика |
statistics | median | Медиана | statistics.median(data) | statistics.median(\[1,2,3]) | Статистика |
queue | Queue | Потокобезопасная очередь | queue.Queue() | q=queue.Queue() | Многопоточность |
enum | Enum | Создание перечислений | class Color(Enum): RED=1 | Color.RED | Константы |
typing | List | Аннотация типов | from typing import List | def f(x:List): | Type hints |
decimal | Decimal | Точные десятичные | decimal.Decimal("0.1") | Decimal("0.1") | Точные вычисления |
fractions | Fraction | Дроби | fractions.Fraction(a,b) | Fraction(1,3) | Точные вычисления |
statistics | stdev | Стандартное отклонение | statistics.stdev(data) | statistics.stdev(\[1,2,3]) | Статистика |
bisect | insort | Вставка в отсортированный список | bisect.insort(list,item) | bisect.insort(a,5) | Сортировка |
xml | etree.ElementTree | Парсинг XML | ET.parse(file) | ET.parse("file.xml") | Структурированные данные |
pickle | dump | Бинарная сериализация | pickle.dump(obj,fp) | pickle.dump(obj,f) | Сохранение данных |
pickle | load | Десериализация | pickle.load(fp) | obj=pickle.load(f) | Восстановление данных |
shelve | open | Постоянный словарь | shelve.open(file) | db=shelve.open("db") | Сохранение |
tokenize | generate_tokens | Токенизация | tokenize.generate_tokens(readline) | tokens=list(tokenize.generate_tokens(f.readline)) | Анализ кода |
pdb | set_trace | Точка останова | pdb.set_trace() | pdb.set_trace() | Отладка |
inspect | getmembers | Члены объекта | inspect.getmembers(obj) | inspect.getmembers(obj) | Рефлексия |
socketserver | TCPServer | TCP сервер | socketserver.TCPServer((host,port),handler) | TCPServer(("0.0.0.0",8000),Handler) | Кастомный сервер |
csv | reader | Чтение CSV | csv.reader(file) | csv.reader(f) | Табличные данные |
csv | writer | Запись CSV | csv.writer(file) | csv.writer(f) | Табличные данные |
tarfile | open | TAR архив | tarfile.open(file) | tarfile.open("archive.tar") | Архивирование |
wave | open | Файл WAV | wave.open(file) | wave.open("audio.wav") | Аудио |
audioop | add | Операции с аудио | audioop.add(fragment1,fragment2,2) | audioop.add(b1,b2,2) | Аудио |
gettext | gettext | Локализация | gettext.gettext("text") | _("Привет") | Интернационализация |
xmlrpc | ServerProxy | XML-RPC клиент | xmlrpc.client.ServerProxy(url) | ServerProxy("[http://localhost:8000") | RPC](http://localhost:8000%22%29 |
asyncio | run | Выполнение корутин | asyncio.run(coro) | asyncio.run(main()) | Асинхронное выполнение |
contextlib | contextmanager | Менеджер контекста | @contextmanager | @contextmanager def cm(): yield | Управление ресурсами |
🧠 Проверьте Свои Знания
Test Your Knowledge
Проверьте свои знания стандартной библиотеки Python
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху