Стандартная библиотека Python — это набор модулей и пакетов, которые поставляются вместе с интерпретатором Python. Она предоставляет широкий спектр возможностей для решения различных задач, от работы с математическими функциями до создания сетевых приложений. В этой статье мы рассмотрим некоторые из наиболее полезных модулей стандартной библиотеки.
1. Модули для работы с математикой и случайными числами
math
Модуль math предоставляет функции для выполнения математических операций, таких как тригонометрические функции, логарифмы, возведение в степень и другие. Например:
import math
print(math.sqrt(16)) # 4.0
print(math.sin(math.pi / 2)) # 1.0
random
Модуль random используется для генерации случайных чисел. Он включает функции для генерации случайных целых чисел, выборки элементов из последовательности и перемешивания списков.
import random
print(random.randint(1, 10)) # Случайное число от 1 до 10
print(random.choice(['apple', 'banana', 'cherry'])) # Случайный элемент из списка
2. Модули для работы с временем и датами
time
Модуль time предоставляет функции для работы со временем, такие как получение текущего времени, задержки выполнения и преобразование времени в различные форматы.
import time
print(time.time()) # Текущее время в секундах с начала эпохи
time.sleep(2) # Пауза на 2 секунды
datetime
Модуль datetime предоставляет классы для работы с датами и временем. Он позволяет создавать, форматировать и манипулировать датами и временем.
from datetime import datetime
now = datetime.now()
print(now.strftime('%Y-%m-%d %H:%M:%S')) # Форматирование даты и времени
3. Модули для работы с JSON
json
Модуль json используется для работы с данными в формате JSON. Он позволяет преобразовывать Python-объекты в JSON-строки и наоборот.
import json
data = {'name': 'John', 'age': 30}
json_str = json.dumps(data) # Преобразование в JSON-строку
print(json_str)
data = json.loads(json_str) # Преобразование из JSON-строки
print(data)
4. Модули для работы с HTTP и URL
http
Модуль http предоставляет низкоуровневые инструменты для работы с HTTP-протоколом.
urllib
Модуль urllib используется для работы с URL-адресами, включая загрузку данных из интернета.
from urllib.request import urlopen
response = urlopen('https://www.example.com')
print(response.read().decode('utf-8'))
5. Модули для работы с виртуальными окружениями
venv
Модуль venv используется для создания и управления виртуальными окружениями Python, которые позволяют изолировать зависимости проектов.
python -m venv myenv
6. Встроенные функции и модули
builtins
Модуль builtins содержит встроенные функции и типы Python, такие как print(), len(), int(), str() и другие.
7. Модули для работы с аргументами командной строки
argparse
Модуль argparse используется для обработки аргументов командной строки. Он позволяет создавать сложные CLI-интерфейсы.
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
args = parser.parse_args()
print(sum(args.integers))
optparse
Модуль optparse является устаревшим и рекомендуется использовать argparse.
8. Модули для работы с перечислениями
enum
Модуль enum предоставляет поддержку перечислений (enumerations) в Python.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED) # Color.RED
9. Модули для работы с классами данных
dataclasses
Модуль dataclasses предоставляет декоратор @dataclass, который автоматически добавляет специальные методы в классы данных.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(10, 20)
print(p) # Point(x=10, y=20)
10. Модули для работы с кодированием и декодированием
base64
Модуль base64 используется для кодирования и декодирования данных в формате Base64.
import base64
encoded = base64.b64encode(b'data to encode')
print(encoded)
decoded = base64.b64decode(encoded)
print(decoded)
11. Модули для логирования
logging
Модуль logging предоставляет гибкую систему логирования для приложений.
import logging
logging.basicConfig(level=logging.INFO)
logging.info('This is an info message')
12. Модули для работы с файловой системой
pathlib
Модуль pathlib предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы.
from pathlib import Path
p = Path('/path/to/file')
print(p.exists())
shutil
Модуль shutil предоставляет функции для работы с файлами и директориями, такие как копирование, перемещение и удаление.
import shutil
shutil.copy('src.txt', 'dst.txt')
13. Модули для генерации уникальных идентификаторов
uuid
Модуль uuid используется для генерации уникальных идентификаторов.
import uuid
print(uuid.uuid4()) # Генерация случайного UUID
14. Модули для работы с типами и коллекциями
typing
Модуль typing предоставляет поддержку аннотаций типов в Python.
from typing import List
def greet_all(names: List[str]) -> None:
for name in names:
print(f'Hello, {name}')
collections
Модуль collections предоставляет специализированные типы данных, такие как deque, Counter, defaultdict и другие.
from collections import Counter
cnt = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(cnt) # Counter({'blue': 3, 'red': 2, 'green': 1})
15. Модули для работы с копированием объектов
copy
Модуль copy предоставляет функции для копирования объектов.
import copy
lst = [1, 2, 3]
lst_copy = copy.deepcopy(lst)
16. Модули для тестирования
unittest
Модуль unittest предоставляет фреймворк для написания и запуска тестов.
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
if __name__ == '__main__':
unittest.main()
17. Модули для работы с итераторами и функциями
itertools
Модуль itertools предоставляет функции для работы с итераторами, такие как комбинаторика, группировка и другие.
import itertools
for i in itertools.count(10):
if i > 15:
break
print(i)
functools
Модуль functools предоставляет функции для работы с функциями, такие как reduce, lru_cache и другие.
from functools import reduce
result = reduce(lambda x, y: x + y, [1, 2, 3, 4])
print(result) # 10
18. Модули для работы с сериализацией
pickle
Модуль pickle используется для сериализации и десериализации Python-объектов.
import pickle
data = {'key': 'value'}
serialized = pickle.dumps(data)
deserialized = pickle.loads(serialized)
print(deserialized)
19. Модули для работы с контекстами
contextlib
Модуль `contextlib` предоставляет утилиты для работы с контекстными менеджерами.
from contextlib import contextmanager
@contextmanager
def open_file(name, mode):
f = open(name, mode)
try:
yield f
finally:
f.close()
with open_file('test.txt', 'w') as f:
f.write('Hello, World!')
20. Модули для работы с импортом
importlib
Модуль importlib предоставляет функции для динамического импорта модулей.
import importlib
module = importlib.import_module('math')
print(module.sqrt(16)) # 4.0
pkgutil
Модуль pkgutil предоставляет утилиты для работы с пакетами и модулями.
import pkgutil
for module in pkgutil.iter_modules():
print(module.name)
21. Модули для работы с сокетами
socket
Модуль socket предоставляет низкоуровневый интерфейс для работы с сетевыми сокетами.
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('www.example.com', 80))
s.sendall(b'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n')
data = s.recv(1024)
print(data)
22. Модули для работы с байт-кодом и AST
dis
Модуль dis предоставляет функции для дизассемблирования байт-кода Python.
import dis
def add(a, b):
return a + b
dis.dis(add)
ast
Модуль ast предоставляет функции для работы с абстрактным синтаксическим деревом (AST) Python.
import ast
tree = ast.parse('x = 1 + 2')
print(ast.dump(tree))
23. Модули для работы с переменными и атрибутами
vars
Функция vars возвращает словарь атрибутов объекта.
class MyClass:
def __init__(self, x, y):
self.x = x
self.y = y
obj = MyClass(10, 20)
print(vars(obj)) # {'x': 10, 'y': 20}
inspect
Модуль inspect предоставляет функции для получения информации о живых объектах, таких как модули, классы и функции.
import inspect
def my_function(a, b):
return a + b
print(inspect.signature(my_function)) # (a, b)
Заключение
Стандартная библиотека Python — это мощный инструмент, который значительно упрощает разработку приложений. В этой статье мы рассмотрели лишь некоторые из множества доступных модулей. Освоение стандартной библиотеки позволит вам писать более эффективный и качественный код, а также решать сложные задачи с минимальными усилиями.