基于解析字符串的变量名称

时间:2012-04-24 02:08:32

标签: string python-3.x variable-assignment naming-conventions symbol-table

我想根据解析后的字符串命名我的变量。

例如:  如果在string =='dog'中解析:            我的变量名应该等于dog,它的值是字符串'dog'

1 个答案:

答案 0 :(得分:1)

This answer通知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 documentation here

还有一个对应的globals()来访问全局可见变量。请参阅this part of the python documentation以了解变量的范围。

在上面的上下文中,globals()产生一个具有相同内容的dict,因为在这种情况下,本地范围是全局的。在课堂上,您将看到不同的内容,您必须决定是否要破坏本地范围或全局范围。

然而,除非你知道自己在做什么,否则做这种事情可能不是一个好主意。您可以创建具有name属性的自定义类的对象 - 取决于您打算做什么