Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Yudhishthir SinghОтветов: 1

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

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

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

stringnaming-conventionsvariable-assignmentsymbol-table

Ответы

Ответ 1 · рейтинг 1 · cfi

Этот ответ для информирования о таблицах символов в 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 с тем же содержимым, потому что в этом случае локальная область является глобальной. Внутри класса вы увидите различный контент, и вам нужно решить, хотите ли вы изменить локальную область или глобальную.

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы