Почему бы вам просто не отредактировать свой предыдущий ответ вместо создания нового?

могу получить переменную, которая содержит текущую выполняющуюся функцию в Python? Я не хочу имя функции. Я знаю, что могу использоватьinspect.stack чтобы получить текущее имя функции. Я хочу фактический вызываемый объект. Можно ли это сделать без использованияinspect.stack чтобы получить имя функции, а затемevalимя, чтобы получить вызываемый объект?

Редактировать: У меня есть причина, чтобы сделать это, но это даже далеко не хорошая причина. я используюНОАК разобрать аргументы командной строки. Вы используете это, делаяplac.call(main), который генерирует объект ArgumentParser из сигнатуры функции «main». Внутри «main», если есть проблема с аргументами, я хочу выйти с сообщением об ошибке, которое включает текст справки из объекта ArgumentParser, что означает, что мне нужно получить прямой доступ к этому объекту, вызвавplac.parser_from(main).print_help(), Было бы неплохо иметь возможность вместо этого сказать:plac.parser_from(get_current_function()).print_help(), так что я не полагаюсь на функцию с именем "main". Прямо сейчас моя реализация get_current_function будет выглядеть так:

import inspect    
def get_current_function():
    return eval(inspect.stack()[1][3])

Но эта реализация опирается на функцию, имеющую имя, которое, я полагаю, не слишком обременительно. Я никогда не собираюсь делатьplac.call(lambda ...).

В долгосрочной перспективе, возможно, было бы более полезно попросить автора plac реализовать метод print_help для печати текста справки по функции, которая была недавно вызвана с использованием plac, или чего-то подобного.

Ответы на вопрос(0)

Ваш ответ на вопрос