TGViewer
Python академия Python академия @pythonofff · 7.13K subscribers
Post #3145 987
Определение имени функции изнутри этой функции в Python

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

Рассмотрим простой пример. Допустим, есть модуль mymodule и в нем функция myfunc. И нужно, чтобы при вызове mymodule.myfunc() эта функция могла выводить свое имя.


# mymodule.py

def myfunc():
print("my name is", __myname__) # как определить __myname__?


Как видно из примера, требуется найти способ определить имя функции myfunc внутри самой этой функции.

В Python нет встроенного способа определить имя функции изнутри этой функции, но это можно сделать с помощью метода name объекта функции.

# mymodule.py

def myfunc():
print("my name is", myfunc.__name__)


В этом случае при вызове функции myfunc она выведет «my name is myfunc».

Такой способ работает, потому что в Python функции являются объектами, и у всех объектов функции есть атрибут name, который содержит имя функции.

Обратите внимание, что такой способ работает только тогда, когда функция вызывается по имени, которое было использовано при ее определении. Если же функцию присвоить другой переменной и вызвать по этому новому имени, то myfunc.__name__ все равно вернет первоначальное имя функции:

# mymodule.py

def myfunc():
print("my name is", myfunc.__name__)

anothername = myfunc
anothername() # выведет "my name is myfunc"


Таким образом, с помощью метода name можно определить имя функции изнутри этой функции в Python.


Подписывайтесь на канал 👉@pythonofff
More from @pythonofff
  1. Sep 27, 2026Конструктор класса У классов практически во всех языках есть конструкторы — это такие спец…
  2. Sep 24, 2026Анонимные функции Часто функции нужны только один раз, причем короткие. И избыточно создав…
  3. Sep 23, 2026Бесконечные списки Мы уже рассказывали про важность копирования списков. Но именно из-за т…
  4. Sep 21, 2026Заглушки Для создания пустых функций и классов есть сразу два способа соответствующих прав…
  5. Sep 20, 2026Параметры функции *args, **kwargs Думаю, многие хоть раз видели такую запись, сейчас мы уз…
  6. Sep 18, 2026В одну строчку Python гибкий язык и позволяет многое сделать в одну строчку. К примеру, ма…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →