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