python Как получить имени переменной в виде строки?

Избитый вопрос, мне нужно получить имя переменной в виде строки. Понимаю, что у переменных нет функции name - она в коде только для того, чтобы было понятней, что я хочу получить. Суть в том, что мне нужно только ИМЯ переменной чтобы получить доступ к базе данных по словарю. Мне глубоко фиолетово на что эта переменная ссылается, это совершенно не важно, только имя и всё. Нужно получить аналог W = F['spisok'] используя "x".

import shelve

spisok = 12345

def ABC(x):
    F = shelve.open('База данных')
    W = F[x.__name__]

Q = ABC(spisok)

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

Автор решения: Stanislav Volodarskiy

Чем плох такой вариант?

def DEF(x_name):
    F = shelve.open('База данных')
    W = F[x_name]
    return ...

Q = DEF('spisok')

Сравните с оригинальным вариантом:

def ABC(x):
    F = shelve.open('База данных')
    W = F[x.__name__]
    return ...

Q = ABC(spisok)

Замена в вызывающем коде ABC(spisok) -> DEF('spisok'). Какие могут быть недостатки у второго вызова в сравнении с первым?

Шутки ради ABC можно кривовато реализовать так:

def ABC(x):
    for k, v in inspect.currentframe().f_back.f_locals.items():
        if v == x:
            F = shelve.open('База данных')
            W = F[k]
            return ...
            
spisok = 12345
Q = ABC(spisok)

Это работает но зачем? И что делать с ABC(a + b)?

→ Ссылка