Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Ссылка на функцию внутри функции

#python


В Python любая функция - это объект. Но как тогда получить ссылку на этот объект
внутри функции? Никакого self функция внутри себя не видит.
    


Ответы

Ответ 1



А что мешает использовать имя функции? >>> def foo(): ... return foo ... >>> foo() >>> foo Если имя функции неизвестно, то получить его нельзя. Подобая функциональность была отвергнута. Но, как говорится, если очень хочется, то есть несколько вариантов. Я бы не рекомендовал так делать без особой на то нужды Через inspect: import inspect def foo(): print inspect.stack()[0][3] Через sys: import sys def foo(): print sys._getframe().f_code.co_name Получить метод, зная название функции, можно через функцию globals() Upd Внимание! Согласно документации не все реализации python могут включать sys._getframe. Это функция для внутреннего использования интерпретатора CPython и может не работать на других. Используйте на свой страх и риск

Ответ 2



Можно попробовать вот так: import inspect def foo(): name = inspect.stack()[0][3] print(name) print(globals()[name]) foo()

Комментариев нет:

Отправить комментарий