如何在字符串中获取给定名称的变量的值?

时间:2012-02-24 20:41:22

标签: python string variables

为简单起见,这是我想要做的简化版本:

def foo(a):
    # I want to print the value of the variable
    # the name of which is contained in a

我知道如何在PHP中执行此操作:

function foo($a) {
    echo $$a;
}

global $string = "blah"; // might not need to be global but that's irrelevant
foo("string"); // prints "blah"

有什么办法吗?

4 个答案:

答案 0 :(得分:87)

如果它是全局变量,那么你可以这样做:

>>> a = 5
>>> globals()['a']
5

关于各种“eval”解决方案的说明:你应该小心使用eval,特别是如果你正在评估的字符串来自可能不受信任的来源 - 否则,你最终可能会删除磁盘的全部内容或如果你被给了一个恶意的字符串,那就是这样的。

(如果它不是全局的,那么你将需要访问它所定义的任何命名空间。如果你没有,那么你将无法访问它。)

答案 1 :(得分:31)

Edward Loper的答案仅在变量位于当前模块中时才有效。要在另一个模块中获取值,您可以使用getattr

import other
print getattr(other, "name_of_variable")

https://docs.python.org/2/library/functions.html#getattr

答案 2 :(得分:13)

>>> string = "blah"
>>> string
'blah'
>>> x = "string"
>>> eval(x)
'blah'

答案 3 :(得分:7)

>>> x=5
>>> print eval('x')
5

多田!