@ilia_andryuhin
Пока что учусь

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

Есть переменная к примеру
a = -12345
переменная добавлена в какой нибудь список p
p=[a]
теперь мне нужно вывести название самой переменной
при попытке по типу:
print(p[0])
выводятся сами цифры -12345
а нужно само название 'a'
поймите правильно вспомнил про словарь я уже поздно и очень много чего надо будет переделывать( а так лень
может быть есть какая нибудь библиотека которая может мне помочь?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 2
mayton2019
@mayton2019
Bigdata Engineer
Тебе это скорее всего не надо делать. Чтоб из элемента массива что-то извлечь - надо просто больше туда добавлять. Например вместо атома добавить tuple.

>>> a = (-12345, 'a')
>>> p = [a]
>>> print(p[0][1])
a
Ответ написан
@EugeneKh
def namestr(obj, namespace):
    return [name for name in namespace if namespace[name] is obj]

x = []
a = -12345
x.append(a)

n = namestr(x[0], globals())[0]

print(n)
# a


How to print original variable's name in Python af...
How can you print a variable name in python?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Никак. Переменная - это просто именованная ссылка на объект.
И одна переменная не знает про остальные. Можно узнать число ссылок на объект, но их имена в общем случае узнать нельзя. Есть частный случай, показанный EugeneKh, который работает, если ты знаешь пространство имён, где могут лежать искомые ссылки. Но тут вообще впору задаться вопросом "а зачем тебе это?".

Также есть такая вещь как предварительное выделение (interning) типовых объектов.
Иными словами:
>>> a = -100
>>> b = -100
>>> a is b
False
>>> a = 100
>>> b = 100
>>> a is b
True

Потому что объекты int для некоторых часто встречающихся чисел выделяются уже при старте питона, и все упоминания этих чисел просто ссылаются на них. И да - это зависит от интерпретатора.
Так что для примитивных типов такой подход не сработает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы