Загружаем изображение…

Знаете, что в Python можно получить имя вызывающего контекста без передачи аргументов?



Иногда нужно логировать, откуда был вызов, но прокидывать имя функции через декораторы не всегда удобно и перегружает API:
sys._getframe()

_getframe() даёт доступ к текущему стеку выполнения: код, локальные переменные и вызывающий контекст.
sys._getframe(1)

Смещение 1 — это уже вызывающий frame (контекст), откуда был сделан вызов:
frame.f_code.co_name

Так можно получить имя функции (или "<module>", если вызов из модуля), а также файл и строку, без изменения сигнатур:
f"{frame.f_code.co_name}:{frame.f_lineno}"

Этот приём можно использовать в логгерах, трассировщиках и debug-инструментах для получения контекста.

Python Ready | #совет
Просмотры: 205
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти