Re: python: название переменной в виде строки
Имя имеет ссылка. На каждую переменную может быть несколько ссылок, поэтому нет однозначной связи между переменной и именем.
Re: python: название переменной в виде строки
А нельзя ли как-нибудь "выдрать" название переменной, например, из locals(); там оно хранится в виде строки (и как-то в эту строку транслируется). Получается, что по названию переменной можно определить её значение, а наоборот — нет?
Re: python: название переменной в виде строки
Re: python: название переменной в виде строки
список переменных
> 1. Конкретная задача: есть список переменных, значения которых нужно отобразить в полях формы. Причём название поля = название переменной.
А зачем их делать отдельными переменными? Поместите их все в словарь.
Re: python: название переменной в виде строки
> 2. Интересно 🙂
Имя переменной ‘x’ _всегда_ ‘"x"’. Зачем его откуда-то выдирать, если оно известно заранее?
>1. Конкретная задача: есть список переменных, значения которых нужно отобразить в полях формы
Измени задачу. "Есть список имен переменных, . ". Тогда просто получишь что-то типа
for i in ‘a b c d’.split(): gui.get_widget(i).set_text(locals()[i])
Re: список переменных
>А зачем их делать отдельными переменными? Поместите их все в словарь.
имена "x", "y", "z" используются внутри функции; x, y, z — передаются в качестве параметров; можно, конечно, передавать готовый словарь в качестве параметра, но тогда имхо код не так хорошо читается; хотя надо будет попробовать. Спасибо 🙂
получение имени переменной в Python во время выполнения?
есть ли способ узнать во время выполнения, имени переменной (из кода) ? или имена var забываются во время компиляции (байт-код или нет) ?
примечание: Я говорю о простых переменных типа данных (int, str, list. )
8 ответов
здесь базовая (возможно, странная) функция, которая показывает имя своего аргумента. идея заключается в анализе кода и поиске вызовов функции (добавлено в init метод это может помочь найти имя экземпляра, хотя с более сложным анализом кода)
пожалуйста, обратите внимание: получение нескольких строк из кода вызова помогает в случае, если вызов был разделен, как в приведенном ниже примере:
но произведет непредвиденный результат дальше это:
Если у вас нет контроля над форматом вашего проекта, вы все равно можете улучшить код для обнаружения и управления различными ситуациями.
В целом я думаю, что статический анализ кода может дать более надежный результат, но я слишком ленив, чтобы проверить его сейчас
имена переменных не забываются, вы можете получить доступ к переменным (и посмотреть, какие переменные у вас есть) путем самоанализа, например
однако, поскольку в Python нет указателей, нет способа ссылаться на переменную без фактического написания ее имени. Поэтому, если вы хотите напечатать имя переменной и ее значение, вы можете перейти через locals() или аналогичная функция. ( [i] становится [1] и нет никакого способа получить информацию, что 1 на самом деле пришли из i .)
имена переменных сохраняются в скомпилированном коде (вот как, например, dir встроенный может работать), но отображение, которое там идет от имени к значению, а не наоборот. Поэтому, если есть несколько переменных, все они стоят, например, 23 , нет способа отличить их друг от друга, основываясь только на значении 23 .
вот функция, которую я использую для печати значения переменных, она работает как для локальных, так и для глобальных:
поэтому следующий код:
Это будет работать для простых типов данных (str,int, float, list и т. д.)
Как получить имя переменной в Python во время выполнения?
Есть ли способ узнать во время выполнения имя переменной (из кода)? Или имена переменных, забытые во время компиляции (байт-код или нет)?
Примечание . Я говорю о простых переменных типа данных ( int , str , list и т. д.)
8 ответов
Здесь базовая (возможно, странная) функция, которая показывает имя своего аргумента . идея состоит в том, чтобы анализировать код и искать вызовы функции (добавленный в метод init , он может помочь найти имя экземпляра, хотя и с более сложным анализом кода)
Обратите внимание: получение нескольких строк из кода вызова помогает в случае разделения вызова, как показано в следующем примере:
Но даст неожиданный результат на этом:
Если у вас нет контроля над форматом вашего проекта, вы все равно можете улучшить код для обнаружения и управления различными ситуациями .
В целом, я думаю, что статический анализ кода может дать более надежный результат, но мне лень проверять это сейчас
Вы можете сделать это, это просто не красиво.
Это будет работать для простых типов данных (str, int, float, list и т. Д.)
Имена переменных сохраняются в скомпилированном коде (именно так может работать, например, встроенная dir ), но отображаемое здесь отображение меняется от имени к значению, а не наоборот. Таким образом, если есть несколько переменных, которые все стоят, например, 23 , невозможно отличить их друг от друга, основываясь только на значении 23 .
Я попробовал следующую ссылку из поста выше, но безуспешно: Googling вернул эту.
Вот функция, которую я использую для вывода значений переменных, она работает как для локальных, так и для глобальных переменных:
Итак, следующий код:
Буквально вчера я увидел сообщение в блоге с рабочим кодом, который делает именно это. Вот ссылка:
Имена переменных не забываются, вы можете получить доступ к переменным (и посмотреть, какие переменные у вас есть) с помощью самоанализа, например,
Однако, поскольку в Python нет указателей, нет способа ссылаться на переменную без фактического написания ее имени. Поэтому, если вы хотите напечатать имя переменной и ее значение, вы можете использовать locals() или аналогичную функцию. ( [i] становится [1] , и нет способа извлечь информацию о том, что 1 фактически получен из i .)