【问题标题】:variable names based on a parsed string基于解析字符串的变量名
【发布时间】:2012-05-04 16:10:50
【问题描述】:

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

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

【问题讨论】:

  • 您可以在 PHP 中执行此操作(它们被称为变量变量),但我从未听说过它在 Python 中。也许搜索那个词。

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


【解决方案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 属性的自定义类的对象 - 取决于您打算做什么

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    相关资源
    最近更新 更多