Pythonでは、変数名を文字列として扱う方法がいくつかあります。ここでは、locals()
関数、globals()
関数、eval()
関数の3つの方法を紹介します。
locals()関数を使う方法
locals()
関数は、現在のローカルスコープ内で定義されている変数を辞書として返します。この辞書のキーには変数名が、値には変数の値が格納されています。変数名を文字列として取得するためには、この辞書のキーを使用します。
def func():
x = 100
y = 200
# locals()のコピーを作成
locals_vars = locals().copy()
for var_name, var_value in locals_vars.items():
print(f'{var_name}\\t{var_value}')
z = 30
func()
globals()関数を使う方法
globals()
関数は、現在のグローバルスコープ内で定義されている変数を辞書として返します。locals()
関数と同様に、この辞書のキーには変数名が、値には変数の値が格納されています。
def func():
x = 100
y = 200
z = 30
# globals()のコピーを作成
global_vars = globals().copy()
for var_name, var_value in global_vars.items():
print(f'{var_name}\\t{var_value}')
eval()関数を使う方法
Pythonではeval
という関数があります。文字列を式として扱う関数です。引数に変数名を与えるとその変数の値を返します。以下のような使用方法で、変数名を文字列として扱えます。
def print_name_value(_str):
print('{}: {}'.format(_str, eval(_str)))
hoge = 0
print_name_value('hoge') # 出力 >> hoge: 0
これらの方法を使うことで、Pythonで変数名を文字列として取得することができます。プログラムのデバッグや動的な変数の操作など、さまざまな場面で活用することができます。