Neue Codierer schreiben manchmal Code wie folgt:
my_calculator.button_0 = tkinter.Button(root, text=0)
my_calculator.button_1 = tkinter.Button(root, text=1)
my_calculator.button_2 = tkinter.Button(root, text=2)
...
Dem Codierer bleibt dann ein Stapel benannter Variablen mit einem Codierungsaufwand von O ( m * n ) übrig , wobei m die Anzahl der benannten Variablen und n die Häufigkeit ist, mit der auf diese Gruppe von Variablen zugegriffen werden muss (einschließlich der Erstellung) ). Der klügere Anfänger stellt fest, dass der einzige Unterschied in jeder dieser Zeilen eine Zahl ist, die sich aufgrund einer Regel ändert, und entscheidet sich für die Verwendung einer Schleife. Sie bleiben jedoch bei der dynamischen Erstellung dieser Variablennamen hängen und versuchen möglicherweise Folgendes:
for i in range(10):
my_calculator.('button_%d' % i) = tkinter.Button(root, text=i)
Sie stellen bald fest, dass dies nicht funktioniert.
Wenn das Programm beliebige Variablennamen benötigt, ist ein Wörterbuch die beste Wahl, wie in anderen Antworten erläutert. Wenn Sie jedoch einfach versuchen, viele Variablen zu erstellen, und es Ihnen nichts ausmacht, mit einer Folge von Ganzzahlen auf sie zu verweisen, suchen Sie wahrscheinlich nach einer list
. Dies gilt insbesondere dann, wenn Ihre Daten homogen sind, z. B. tägliche Temperaturwerte, wöchentliche Quizergebnisse oder ein Raster grafischer Widgets.
Dies kann wie folgt zusammengesetzt werden:
my_calculator.buttons = []
for i in range(10):
my_calculator.buttons.append(tkinter.Button(root, text=i))
Dies list
kann auch in einer Zeile mit einem Verständnis erstellt werden:
my_calculator.buttons = [tkinter.Button(root, text=i) for i in range(10)]
In beiden Fällen ist das Ergebnis ein ausgefülltes Ergebnis list
, bei dem auf das erste Element zugegriffen wird my_calculator.buttons[0]
, auf das nächste mit my_calculator.buttons[1]
und so weiter. Der Name der "Basis" -Variable wird zum Namen der list
und der variierende Bezeichner wird verwendet, um darauf zuzugreifen.
Vergessen Sie nicht andere Datenstrukturen wie die set
- dies ähnelt einem Wörterbuch, außer dass jedem "Namen" kein Wert zugeordnet ist. Wenn Sie einfach eine "Tasche" mit Objekten benötigen, kann dies eine gute Wahl sein. Anstelle von so etwas:
keyword_1 = 'apple'
keyword_2 = 'banana'
if query == keyword_1 or query == keyword_2:
print('Match.')
Sie werden dies haben:
keywords = {'apple', 'banana'}
if query in keywords:
print('Match.')
Verwenden Sie a list
für eine Folge ähnlicher Objekte, a set
für einen beliebig geordneten Beutel mit Objekten oder a dict
für einen Beutel mit Namen mit zugehörigen Werten.