Python - переменная внутри имени переменной?

Я не уверен, что это уже здесь, если да, то мне очень жаль.

Я пытаюсь поместить вывод переменной, в данном случае строку, в другое «имя» переменных, если оно так называется, но использование exec не идеально, и я не хочу помещать все это в функцию exec.

Есть ли способ сделать то, что я пытаюсь сделать в этом коде?

world = world[(x,y)].type 
exec("if blocks." + world + ".hasUp == True:")
    tick(taX,taY)

Очень непонятно, но если я понимаю, что вы пытаетесь сделать, используйте не exec, а getattr. (практическое правило: никогда используйте exec или eval)

user10307643 08.12.2018 15:21

У переменной нет вывода. Не могли бы вы перефразировать свой вопрос и прояснить, что это за переменные и что вы имеете в виду, помещая выходные данные переменной в "имя" другой переменной?

monolith 08.12.2018 15:22

Не могли бы вы объяснить это поподробнее?

PYer 08.12.2018 15:22

Это X / Y Проблема - вы пытаетесь обойти какую-то неизвестную проблему и теперь спрашиваете, можем ли мы исправить это плохое решение. Пожалуйста, добавьте еще свой код.

Jongware 08.12.2018 15:22

в дополнение к тому, что сказал usr2564301, похоже, вы пытаетесь создать переменную / свойство динамически, и это намекает на плохой дизайн

buran 08.12.2018 15:27
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
5
344
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте __dict__:

>>> def foo():
...     pass
... 
>>> a = "hello"
>>> foo.__dict__[a] = "world"
>>> foo.hello
'world'

globals() для глобальной переменной (возвращает словарь глобальных переменных):

>>> name = "may"
>>> globals()[name] = "the force be with you"
>>> may
'the force be with you'

locals() для локальной переменной:

>>> name = "life"
>>> locals()[name] = "was like a box of chocolates"
>>> life
'was like a box of chocolates'

Другие вопросы по теме