- Как получить имя функции как строку в Python?
- Постановка проблемы
- Метод 1: Используйте атрибут __name__
- Метод 2: Используйте атрибут __qualname__
- Читайте ещё по теме:
- How to Get a Function Name as a String in Python?
- Get a function name as a string using __name__
- Frequently Asked:
- Get a function name as a string using func_name
- Get a function name as a string using qualname
- Summary
- Related posts:
- Как получить имя функции в виде строки в Python?
Как получить имя функции как строку в Python?
Состав задачи, заданный объект функции, назначенного имени. Как получить имя функции как строку? Например, рассмотрим следующую функцию your_function. Как получить название «your_function» от этого? def your_function (): пройти string_name = . Ваше желаемое значение результата, хранящегося в String_Name, является строкой «your_function». … Как получить имя функции как строку в Python? Подробнее “
Постановка проблемы
Учитывая функциональный объект, назначенный на имя. Как получить имя функции как строку?
Например, рассмотрим следующую функцию your_function Отказ Как получить имя «your_function» из этого?
def your_function(): pass string_name = .
Ваше желаемое значение результата хранится в string_name это строка «your_function» Отказ
print(string_name) # your_function
Метод 1: Используйте атрибут __name__
Самый питонический способ извлечения имени от любого объекта или класса – использовать его __name__ атрибут. Атрибуты, заключенные в двойной подчеркивании (атрибуты Dunder), предоставляют специальные функциональные возможности для программистов Python. Например, звонок your_function .__ Имя__ дает строковое значение ‘your_function’ Отказ
def your_function(): pass string_name = your_function.__name__ print(string_name) # your_function
Тем не менее, есть важный случай, когда этот метод потерпит неудачу.
💣 Внимание : В Python функции являются объектами. Вы можете создавать несколько переменных, указывающих на тот же объект в памяти. Поэтому вы можете создать два имени func_1 и func_2 Это оба указывают на один и тот же объект функции. При звонке func_1 .__ name__ Результат может быть func_2 вместо func_1 что ты ожидал.
Это демонстрируется в следующем минимальном примере:
def func_2(): pass func_1 = func_2 print(func_1.__name__) # func_2
Как оба имена указывают на тот же объект памяти, но func_2 Во-первых, указывал на это имя объекта func_2 Отказ Использование памяти этого кода визуализируется с помощью инструмента Python Reputor:
Обе переменные относятся к тому же объекту функции, которые по умолчанию как func_2 имя.
Метод 2: Используйте атрибут __qualname__
Чтобы извлечь имя из любого объекта или класса, вы также можете использовать его __qualname__ атрибут. Например, звонок your_function .__ Qualname__ дает строковое значение ‘your_function’ Отказ Вы бы использовали __qualname__ над __имя__ Если вам также понадобится какой-то контекст, такой как класс, определяющий метод.
Следующий код создает функцию и способ внутри класса. Затем он сравнивает вывод __name__ и __qualname__ Атрибуты как функции, так и класса:
def my_function(): pass class My_Class(object): def my_method(self): pass print(my_function.__name__) # "my_function" print(My_Class.my_method.__name__) # "my_method" print(my_function.__qualname__) # "my_function" print(My_Class.my_method.__qualname__) # "My_Class.my_method"
Вы можете погрузиться глубже в идиосинкразиях __qualname__ здесь и здесь Отказ
Спасибо за прочтение этой статьи. Чтобы повысить свои навыки Python, подумайте о том, чтобы присоединиться к бесплатной академии электронной почты Finxter с большим количеством чит-листов, учебников Python и забиты забавных программиров! 🙂
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Читайте ещё по теме:
How to Get a Function Name as a String in Python?
In this python tutorial, we will learn how to get a function name as a string.
Table Of Contents
Get a function name as a string using __name__
Python3 version supports this method which is used to get the function name in string format. It also returns the module name.
Here, the function is the function name. If you want to check the type of the returned function, then you can use the type() function. It returns the string class type.
Frequently Asked:
In this example, we will create two functions and get the function names and their types using __name__ .
# Create a function named my_first_function. def my_first_function(): print ("This is my first function") # Call the function my_first_function() # Get the function name as string print ("Function name: ", my_first_function.__name__) # Get the type print ("Function type: ", type(my_first_function.__name__)) # Create a function named my_second_function. def my_second_function(): print ("This is my second function") # Call the function my_second_function() # Get the function name as a string print ("Function name: ", my_second_function.__name__) # Get the type print ("Function type: ", type(my_second_function.__name__))
This is my first function Function name: my_first_function Function type: This is my second function Function name: my_second_function Function type:
You can see that the function name is returned and the type is str, which represents the string.
In this example, we imported two modules and get the module name and its type using name .
import math import random # Get the math module name as string print ("Function name: ", math.__name__) # Get the type of math print ("Function type: ", type(math.__name__)) # Get the random module name as string print ("Function name: ", random.__name__) # Get the type of random print ("Function type: ", type(random.__name__))
Function name: math Function type: Function name: random Function type:
You can see that the module name is returned and the type is str, which represents the string.
Get a function name as a string using func_name
Python2 version supports this method which is used to get the function name in string format. It is deprecated in the python3 version.
Here, the function is the function name. If you want to check the type of the returned function, then you can use the type() function. It returns the class type.
In this example, we will create two functions and get the function names and their types using func_name.
# Create a function named my_first_function. def my_first_function(): print ("This is my first function") # Call the function my_first_function() # Get the function name as string print ("Function name: ", my_first_function.func_name) # Get the type print ("Function type: ", type(my_first_function.func_name)) # Create a function named my_second_function. def my_second_function(): print ("This is my second function") # Call the function my_second_function() # Get the function name as a string print ("Function name: ", my_second_function.func_name) # Get the type print ("Function type: ", type(my_second_function.func_name))
This is my first function ('Function name: ', 'my_first_function') ('Function type: ', ) This is my second function ('Function name: ', 'my_second_function') ('Function type: ', )
You can see that the function name is returned and the type is str, which represents the string. This code will not work with python3, it will work with previous versions of Python.
Get a function name as a string using qualname
Python3 supports this method which is used to get the function name in string format. It also returns the names of the classes and methods.
Here, the function is the function name. If you want to check the type of the returned function, then you can use the type() function. It returns the class type.
In this example, we will create two functions and get the function names and their types using qualname .
# Create a function named my_first_function. def my_first_function(): print ("This is my first function") # Call the function my_first_function() # Get the function name as string print ("Function name: ", my_first_function.__qualname__ ) # Get the type print ("Function type: ", type(my_first_function.__qualname__ )) # Create a function named my_second_function. def my_second_function(): print ("This is my second function") # Call the function my_second_function() # Get the function name as a string print ("Function name: ", my_second_function.__qualname__ ) # Get the type print ("Function type: ", type(my_second_function.__qualname__ ))
This is my first function Function name: my_first_function Function type: This is my second function Function name: my_second_function Function type:
You can see that the function name is returned and the type is str, which represents the string.
Example 2:
In this example, we will create a class and get the module name and its type using name .
# Define a class with a method - hello class My_class(): def hello(self): pass # Get the class name as a string print ("Class name: ", My_class.__qualname__ ) # Get the class type print ("Class type: ", type(My_class.__qualname__ )) # Get the method name as a string print ("Method name: ", My_class.hello.__qualname__ ) # Get the method type print ("Method type: ", type(My_class.hello.__qualname__ ))
Class name: My_class Class type: Method name: My_class.hello Method type:
In the above code, we created a class named My_class, and a method-hello is created inside it. using qualname, we returned the function name as a string.
Summary
In this tutorial, we discussed three ways to return a function name as a string in python. The func_name does not work in the python 3 versions. If you want to get the class name and methods names as strings, you can use qualname .
Related posts:
Как получить имя функции в виде строки в Python?
должен выводить «my_function» . Доступна ли такая функция в Python? Если нет, какие-либо идеи о том, как реализовать get_function_name_as_string , в Python?
В следующий раз, пожалуйста, укажите вашу мотивацию в вопросе. В своей нынешней форме он, очевидно, сбивает людей с толку, и некоторые из них склонны считать, что вы будете вызывать дословно get_function_name_as_string(my_function) и ожидаете в результате «my_function» . Я предполагаю, что ваша мотивация — это общий код, который работает с функцией как первоклассным объектом и должен получить имя функции, переданной в качестве аргумента.
Мотивация вопроса не имеет отношения к техническому ответу. Прекратите использовать его как оправдание для насмешек, критики, интеллектуального позирования и избегания ответов.
Мотивация может помочь решить, будет ли задан правильный вопрос. В этом примере пользователь уже четко знает имя функции, поэтому использовать другую функцию для его возврата? Почему бы просто не сделать что-то столь же простое, как print(«my_function») ? Ответ на это в мотивации.
@Dannid, это скучный аргумент. Если OP запрашивает имя функции, это потому, что она инкапсулирована или понята способом, который должен быть выведен, например, для целей отладки. Ручная настройка в среде, где требуется такое требование, является ужасной практикой программирования. У вас может быть список функций для вызова, или вам может быть передана функция и вы хотите записать имя функции. И еще миллион причин, кроме просто для развлечения / изучения Python, которого, если хотите, уже достаточно.
Перечитывая мой комментарий, я не уверен, почему я перешел на сторону желания мотивации в ОП. Мотивация должна быть неактуальной. Похоже, я играл адвоката бедного дьявола. Я полагаю, что я чувствовал и не очень хорошо общался, потому что это помогает узнать, какова цель функции — вы отлаживаете? Написание шаблона функции? Создание динамических глобальных переменных? Это одноразовая или постоянная функция, которую вы будете часто использовать? В любом случае, я должен был согласиться с тем, что мотивация не имеет отношения к техническому ответу, хотя это может помочь решить, какой технический ответ лучше.