2010-10-25 3 views
1

Это то, о чем я допрашивал какое-то время. Как создать переменную во время выполнения, как указано по значению другой переменной. Так, например, код попросит пользователя ввести строку. Затем будет создана переменная с именем после этой строки со значением по умолчанию «default». Возможно ли это?Создайте новую переменную как названную из ввода в Python?

+2

Что вы пытаетесь достичь? – knitti

+2

Что бы он ни пытался достичь, этот подход неверен. Используйте «dict» (или другую подходящую коллекцию), но если вы хотите использовать строку, вы, возможно, хотите «dict»), период. – delnan

+0

Внутренние элементы Python настолько прозрачны, что соблазн сказать, как это сделать, но гораздо интереснее будет придумать случай, когда это хорошая идея. – Thomas

ответ

4

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

Если вы делали интерактивный интерпретатор, скажем, для выполнения математики или чего-то еще. Вы фактически передали бы dict для каждого eval() или exec, который затем можно было бы повторно использовать, поскольку это локальное пространство имен.

Как быстро, плохо, например, не делают это дома:

g = globals() # get a reference to the globals dict 
g[raw_input("Name Please")] = raw_input("Value Please") 
print foo 

Выполнить, что это будет TraceBack, если вы не предоставите «Foo» в первой строке.

Смежные вопросы