簡単にするために、これは私がやりたいことの簡略版です。
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"
これを行う方法はありますか?
グローバル変数の場合、次のことができます。
>>> a = 5
>>> globals()['a']
5
さまざまな「評価」ソリューションに関する注意:評価する文字列が信頼できない可能性のあるソースから来ている場合は特に、評価に注意する必要があります。悪意のある文字列が与えられた場合。
(グローバルでない場合は、定義されている名前空間にアクセスする必要があります。それがない場合、アクセスできる方法はありません。)
Edward Loperの答えは、変数が現在のモジュールにある場合にのみ機能します。別のモジュールで値を取得するには、getattr
を使用できます。
import other
print getattr(other, "name_of_variable")
>>> string = "blah"
>>> string
'blah'
>>> x = "string"
>>> eval(x)
'blah'
>>> x=5
>>> print eval('x')
5
多田!