Возникает ситуация, когда при написании кода на 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.
Добавить комментарий