Загружаем изображение…
Знаете, что в 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