Генераторы
Генератор — это особый вид итератора, который создаёт элементы по запросу. Вместо того чтобы хранить всю последовательность в памяти, он вычисляет следующее значение только при вызове next().
- Генераторные функции используют
yieldвместоreturn. - Генераторные выражения записываются в круглых скобках:
(x ** 2 for x in range(10)). - Вызов
next()приостанавливает функцию наyieldи возобновляет с того же места. - Бесконечные генераторы полезны для потоков данных, но требуют явного выхода из цикла.
yield from и close()
yield from iterable делегирует управление другому итерируемому объекту или генератору. Это упрощает вложенные генераторы.
Метод close() принудительно завершает генератор. После вызова close() следующий next() вызовет StopIteration.
JSON
JSON (JavaScript Object Notation) — текстовый формат для хранения и передачи структурированных данных. Применяется в API, конфигурационных файлах и базах данных.
json.dumps(obj)— объект Python → JSON-строка.json.dump(obj, file)— объект Python → файл JSON.json.loads(string)— JSON-строка → объект Python.json.load(file)— файл JSON → объект Python.
Форматирование JSON
indent=4— добавляет отступы для читаемости.ensure_ascii=False— сохраняет Unicode-символы как есть, без экранирования\uXXXX.sort_keys=True— сортирует ключи объекта по алфавиту.
JSONDecodeError
Ошибка возникает при некорректном JSON: пропущенные запятые, одинарные кавычки, лишние запятые, незакрытые скобки. Рекомендуется оборачивать загрузку в try-except.
Модуль datetime
Модуль datetime предоставляет инструменты для работы с датами и временем:
datetime.now()— текущая дата и время.datetime(year, month, day)— создание объекта даты..strftime(format)— объект datetime → строка.datetime.strptime(string, format)— строка → объект datetime.timedelta— разница между датами или сдвиг во времени.
Объекты datetime можно сравнивать напрямую операторами >, <, == и другими.
zoneinfo (Python 3.9+) или сторонняя библиотека pytz.