Asignación de nombres de variables dinámicas

Al usar tkinter, es necesario generar variables dinámicamente, como generar dinámicamente las variables var1...var10.

Usar exec para asignación dinámica

exec es una función incorporada en Python 3, que admite la ejecución dinámica de código Python.

Usar exec para asignación dinámica

exec es una función incorporada en Python 3, que admite la ejecución dinámica de código Python.

Ejemplo

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

Asignación dinámica usando espacios de nombres

En el espacio de nombres de Python, los nombres de variables y sus valores se almacenan en diccionarios. Se pueden obtener el espacio de nombres local y el global mediante las funciones locals() y globals(), respectivamente.

Ejemplo

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

Usar variables dinámicas en clases

Los atributos de los objetos de clase de Python se almacenan en __dict__. __dict__ es un diccionario; las claves son los nombres de los atributos y los valores corresponden a los valores de los atributos.

Ejemplo

>>> 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

Llamar a variables dinámicas

De hecho, para variables repetitivas, normalmente no las llamamos así, como: var0, var1, var2, var3, var4....varN. Se pueden llamar dinámicamente con el siguiente método.

Primero define las siguientes variables:

Ejemplo

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

Usar la función exec

Del mismo modo, se puede usar exec para llamar a las variables

Ejemplo

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

Usar espacios de nombres

Dado que locals() y globals() del espacio de nombres devuelven un diccionario, se puede usar el método get del diccionario para obtener el valor de la variable.

Ejemplo

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

Dirección original: https://www.cnblogs.com/technologylife/p/9211324.html