1

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

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

4

1 回答 1

1

这个关于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 属性的自定义类的对象 - 取决于您打算做什么

于 2012-04-24T06:52:39.030 回答