имена переменных на основе проанализированной строки

Я хочу назвать свою переменную на основе проанализированной строки.

Например: если анализируется в строке == 'собака': имя моей переменной должно быть равно собаке, а ее значение - строке 'собака'


person Yudhishthir Singh    schedule 24.04.2012    source источник
comment
Вы можете сделать это в PHP (они называются переменными-переменными), но я никогда не слышал об этом в Python. Может быть, сделать поиск по этому термину.   -  person    schedule 24.04.2012


Ответы (1)


Этот ответ для информирования о таблицах символов в python помогает напрямую ответить на вопрос:

>>> varname = 'spam'
>>> value = 'eggs'
>>> locals()
{'__builtins__': <module 'builtins' (built-in)>, 'varname': 'spam', 'value': 'eggs', '__package__': None, '__name__': '__main__', '__doc__': None}
>>> locals()[varname] = value
>>> locals()
{'__builtins__': <module 'builtins' (built-in)>, 'varname': 'spam', 'spam': 'eggs', 'value': 'eggs', '__package__': None, '__name__': '__main__', '__doc__': None}
>>> print(spam)
some value

locals() предоставляет dict локально видимых переменных. И, изменяя dict, вы можете изменять и создавать новые переменные. Документация по Python здесь

Существует также соответствующий globals() доступ к глобальному видимые переменные. См. эту часть документации по Python. узнать о области видимости переменных.

В приведенном выше контексте globals() дает dict с тем же содержимым, потому что в этом случае локальная область является глобальной. Внутри класса вы увидите различный контент, и вам нужно решить, хотите ли вы изменить локальную область или глобальную.

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

person cfi    schedule 24.04.2012