Question

I want to name my variable based on a parsed in string.

For example: if parsed in string == 'dog': my variable name should be equal to dog and its value the string 'dog'

Was it helpful?

Solution

This answer to inform about symbol tables in python helps to directly answer the question:

>>> 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() provides a dict of the locally visible variables. And by modifying the dict, you can change and create new variables. Python documentation here

There is also a corresponding globals() to access the globally visible variables. Refer to this part of the python documentation to learn about the scope of variables.

In the above context globals() yields a dict with the same content because in this case the local scope is the global. Inside a class, you'll see different content and you have to decide if you want to mangle the local scope or the global one.

However, it is probably not such a good idea to do this kind of stuff unless you know what you are doing. You could create objects of a self-defined class which have a name attribute - depends on what you intend to do

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top