Как вывести название переменной в Python: методы и примеры

Для вывода названия переменной в Python можно использовать функцию globals(), которая возвращает словарь, содержащий все глобальные переменные в текущей области видимости. Затем можно использовать метод items() для получения пар "имя переменной - значение переменной".

x = 10  # Пример переменной
for name, value in globals().items():
    if value is x:
        print(name)
        break

В данном примере переменной x присвоено значение 10. Мы используем цикл for для перебора всех переменных в глобальной области видимости с помощью метода globals(). Затем мы проверяем, равно ли текущее значение переменной x значению из словаря переменных. Если да, то выводим имя переменной.

Детальный ответ

Как вывести название переменной в Python

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

1. Использование locals() или globals()

Функции locals() и globals() в Python позволяют получить словарь всех локальных или глобальных переменных соответственно. Мы можем использовать эти словари для поиска имени переменной, соответствующей её значению.

Вот пример:

def print_variable_name(var):
    matching_vars = [name for name, val in locals().items() if val == var]
    if matching_vars:
        print("Variable name:", matching_vars[0])
    else:
        print("Variable name not found")

x = 10
print_variable_name(x)  # Output: Variable name: x

2. Использование модуля inspect

Модуль inspect предоставляет функции для получения информации о живущих объектах, таких как модули, классы, методы, функции и т.д. Мы можем использовать функцию inspect.currentframe() для получения текущего фрейма кода и затем пройти по коду с помощью метода f_back.f_locals для поиска переменных.

Вот пример:

import inspect

def print_variable_name(var):
    current_frame = inspect.currentframe()
    calling_frame = current_frame.f_back
    matching_vars = [name for name, val in calling_frame.f_locals.items() if val == var]
    if matching_vars:
        print("Variable name:", matching_vars[0])
    else:
        print("Variable name not found")

x = 10
print_variable_name(x)  # Output: Variable name: x

3. Использование декоратора

Мы также можем создать декоратор, который будет автоматически выводить название переменной перед вызовом функции или метода. Для этого мы можем использовать функцию inspect.getframeinfo() для получения информации о текущем фрейме кода и его переменных.

Вот пример:

import inspect

def print_variable_name_decorator(func):
    def wrapper(*args, **kwargs):
        frame = inspect.currentframe().f_back
        info = inspect.getframeinfo(frame)
        lineno = info.lineno
        lines = info.code_context

        for i, line in enumerate(lines):
            if f"{func.__name__}(" in line:
                variable_name = line.split(f"{func.__name__}(")[1].split(")")[0]
                print(f"Variable name at line {lineno+i}: {variable_name}")

        return func(*args, **kwargs)

    return wrapper

@print_variable_name_decorator
def test_function(x):
    print("Hello, World!")

test_function(10)
# Output:
# Variable name at line 14: x
# Hello, World!

Заключение

Теперь вы знаете несколько способов вывода названия переменной в Python. Вы можете использовать функции locals() и globals(), модуль inspect или создать декоратор, чтобы упростить отладку и логирование вашего кода.

Видео по теме

Python. Команды print() input()

Python для начинающих. Как работают переменные в Python. #2

Урок 4 Переменные в Python. Оператор присваивания

Похожие статьи:

Как вывести текст лесенкой в питоне: Вася пошел гулять

Как остановить скрипт по кнопке в Python: решение и примеры

Как удалить запятые из строки Python: простой и эффективный способ

Как вывести название переменной в Python: методы и примеры

Как открыть Python через командную строку: пошаговая инструкция для начинающих

🔍 Как сделать транслит в Python: пошаговое руководство для начинающих

Что значит питон на французском?