Как вывести название переменной в 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
или создать декоратор, чтобы упростить отладку и логирование вашего кода.