Max S. wrote:

> Is it possible to create a variable with a string held by another variable
> in Python?  For example,
> 
>>>> var_name = input("Variable name: ")
> (input: 'var')
>>>> var_name = 4
>>>> print(var)
> (output: 4)
> 
> (Yeah, I know that if this gets typed into Python, it won't work.  It just
> pseudocode.)
> 
> I'm on a Windows Vista with Python 3.2.2.  Thanks.

The direct translation into python uses exec()

>>> name = input("variable name: ")
variable name: var
>>> exec(name + " = 4")
>>> var
4

However, exec() can execute arbitrary code, and if a malicious user enters

import shutil; shutil.rmtree("/path/to/your/data"); x

as the "variable name" you may be in trouble. Therefore experienced users 
normally use a dictionary instead:

>>> namespace = {}
>>> name = input("variable name: ")
variable name: var
>>> namespace[name] = 4
>>> namespace[name]
4

It may look less convenient at first sight, but can save you a lot of 
trouble later on.

_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to