動的変数名への代入

tkinter を使用する際に動的変数を生成する必要があります。例えば var1...var10 変数を動的に生成します。

exec を使用した動的代入

exec は Python3 における組み込み関数で、Python コードの動的実行をサポートします。

exec を使用した動的代入

exec は Python3 における組み込み関数で、Python コードの動的実行をサポートします。

例

>>> for i in range(5):
...     exec('var{} = {}'.format(i, i))
...
>>> print(var0, var1, var2, var3 ,var4)
0 1 2 3 4
>>>

名前空間を利用した動的代入

Python の名前空間では、変数名と値が辞書として格納されています。locals()、globals() 関数を使用すると、それぞれローカル名前空間とグローバル名前空間を取得できます。

例

>>> names = locals()
>>> for i in range(5):
...     names['n' + str(i) ] = i
...
>>> print(n0, n1, n2, n3, n4)
0 1 2 3 4
>>>

クラスでの動的変数の使用

Python のクラスオブジェクトの属性は __dict__ に格納されています。__dict__ は辞書であり、キーが属性名、値が属性の値に対応します。

例

>>> print(n0, n1, n2, n3, n4)
0 1 2 3 4
>>> class Test_class(object):
...     def __init__(self):
...         names = self.__dict__
...         for i in range(5):
...             names['n' + str(i)] = i
...
>>> t = Test_class()
>>> print(t.n0, t.n1, t.n2, t.n3, t.n4)
0 1 2 3 4

動的変数の呼び出し

実際、繰り返し使用する変数については、通常 var0, var1, var2, var3, var4....varN のように個別に呼び出すことはしません。以下の方法で変数を動的に呼び出すことができます。

まず以下のように変数を定義します:

例

>>> for i in range(5):
...     exec('var{} = {}'.format(i, i))
...
>>> print(var0, var1, var2, var3 ,var4)
0 1 2 3 4

exec 関数を利用する

同様に、exec を使用して変数を呼び出すこともできます

例

>>> for i in range(5):
...     exec('print(var{}, end=" ")'.format(i))
...
0 1 2 3 4

名前空間を利用する

locals() と globals() はどちらも辞書を返すため、辞書の get メソッドを利用して変数の値を取得します。

例

>>> names = locals()
>>> for i in range(5):
...     print(names.get('var' + str(i)), end=' ')
...
0 1 2 3 4

原文アドレス:https://www.cnblogs.com/technologylife/p/9211324.html