1. ホーム
  2. python

[解決済み] 文字列で変数名を指定して、その値を取得する方法は?重複

2022-09-08 10:59:47

質問

簡単のために、これは私がやりたいことの削ぎ落とされたバージョンです。

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

様々な "eval"ソリューションに関するメモ: eval には注意が必要で、特に評価する文字列が潜在的に信頼できないソースから来る場合です -- さもなければ、悪意のある文字列を与えられた場合、ディスクの内容全体を削除してしまったりすることになるかもしれません。

(それがグローバルでないなら、それが定義されているどんな名前空間にもアクセスする必要があります。 それがなければ、アクセスすることはできません)。