Страницы

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

воскресенье, 21 октября 2018 г.

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

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


Ответ

А что мешает использовать имя функции?
>>> 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 и может не работать на других. Используйте на свой страх и риск

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

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