我想根据解析的字符串命名我的变量。
例如:如果在字符串中解析 == 'dog':我的变量名应该等于 dog 并且它的值是字符串 'dog'
我想根据解析的字符串命名我的变量。
例如:如果在字符串中解析 == 'dog':我的变量名应该等于 dog 并且它的值是字符串 'dog'
这个关于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 文档在这里
还有一个对应globals()
的访问全局可见变量。请参阅python 文档的这一部分以了解变量的范围。
在上面的上下文中globals()
产生dict
具有相同内容的 a 因为在这种情况下本地范围是全局的。在一个类中,您会看到不同的内容,您必须决定是要破坏本地范围还是全局范围。
但是,除非您知道自己在做什么,否则做这种事情可能不是一个好主意。您可以创建具有 name 属性的自定义类的对象 - 取决于您打算做什么