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

2024-05-28 23:58:11 发布

您现在位置:Python中文网/ 问答频道 /正文

为了简单起见,这是我想要做的事情的精简版本:

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"

有办法吗?


Tags: oftheto版本stringfoovaluedef
3条回答
>>> string = "blah"
>>> string
'blah'
>>> x = "string"
>>> eval(x)
'blah'

如果是全局变量,则可以执行以下操作:

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

关于各种“eval”解决方案的注意事项:您应该小心eval,特别是当您正在计算的字符串来自一个潜在的不受信任的源时——否则,如果给您一个恶意字符串,您可能会删除磁盘的全部内容或类似内容。

(如果它不是全局的,那么您将需要访问在其中定义的任何名称空间。如果你没有它,你就无法访问它。)

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

import other
print getattr(other, "name_of_variable")

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

相关问题 更多 >

    热门问题