python Как получить имени переменной в виде строки?
Избитый вопрос, мне нужно получить имя переменной в виде строки. Понимаю, что у переменных нет функции name - она в коде только для того, чтобы было понятней, что я хочу получить. Суть в том, что мне нужно только ИМЯ переменной чтобы получить доступ к базе данных по словарю. Мне глубоко фиолетово на что эта переменная ссылается, это совершенно не важно, только имя и всё. Нужно получить аналог W = F['spisok'] используя "x".
import shelve
spisok = 12345
def ABC(x):
F = shelve.open('База данных')
W = F[x.__name__]
Q = ABC(spisok)
Ответы (1 шт):
Чем плох такой вариант?
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)?