我想根据解析后的字符串命名我的变量。
例如: 如果在string =='dog'中解析: 我的变量名应该等于dog,它的值是字符串'dog'
答案 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属性的自定义类的对象 - 取决于您打算做什么