【Python】変数名を動的に変更して変数を作成する方法 – exec()

変数の値をインクリメントしていくのはよくある話ですが、pythonでは変数名を1つずつ宣言することなく、for文でインクリメント(例えば、var1, var2…)していくこともできます。

今回はその方法を紹介します。

exec()を使う

exec()はPythonの組み込み関数で、インポートなしに利用できます。exec()にはPythonのプログラムコードを文字列で渡すことで、そのプログラムを実行することができます。

exec("a = 1")
print(a)

>> 1

“a = 1″という文字列をexec()に渡すと、そのスクリプトが実行されます。結果、print文でaを実行すると1が出力されます。このように文字列をプログラムとして実行することを利用して、変数を動的に作成することができます。

for文で繰り返し変数を生成

exec()をfor文で繰り返し実行することで、変数を作成していきます。文字列に変数を挿入できるformat()を利用します。

変数はvar_listに格納した3つを作成します。

var_list = ["var1", "var2", "var3"]

for i in range(len(var_list)):
    var_name = var_list[i]
    exec("{} = 1".format(var_name))

このプログラムを実行すると、var1、var2、var3が生成されます。

var1、var2、var3が生成される

まとめ

Pythonで変数名を動的に決めたい場合はexec()を使いましょう。ただ、デバッグがしづらい等デメリットも多々あるので、多用するのはあまりお勧めできません。

禁術として、どうしても使わざるを得ない場合のみにとどめておくことをオススメします。

ではでは👋