Преобразовать имя(название) переменной в строку(str)

Есть список с переменными. Например, одна из них называется model_xgb, при применении обертки str, получаю это:

LGBMRegressor(bagging_fraction=0.8,...{много букв и символов} .... subsample_for_bin=200000", subsample_freq=0)

Мне нужно, чтобы ее имя - model_xgb, а не содержание, преобразовать в строку. Как это сделать?


Ответы (2 шт):

Автор решения: Zhihar

попробуйте так:

# функция перевода имени переменной в строку
def var2str(var, vars_data = locals()):
    return [var_name for var_name in vars_data if id(var) == id(vars_data[var_name])]


# проверка работы функции на локальных переменных
def test():
    your_variable = "test"

    for index in range(1):
        print(var2str(index, locals()))


# проверка работы функции на глобальных переменных
my_variabe = 1

test()
print(var2str(my_variabe))

если нужны только глобальные:

def var2str(variable):

    return [global_var for global_var in globals() if id(variable) == id(globals()[global_var])]


my_variabe = 1
your_variable = "test"

print(var2str(my_variabe))

можно еще так:

import varname

my_variabe = 1
your_variable = "test"

print(varname.nameof(my_variabe))

но у меня не установлен модуль varname, чтобы проверить код :(

→ Ссылка
Автор решения: Sergey Svetloff

Нашел, как сделать:

poisson_glm[-1].__class__.__name__

"poisson_glm" - переменная. Вызывали ее из списка:

model = [ridge_glm, poisson_glm, poisson_gbrt]

Я похоже, не совсем, правильно задал вопрос. Сорри, начинающий питонер:)

→ Ссылка