[PYTHON] Erreiche Aufzählungsmodoki ohne Aufzählung

Ich fragte mich, ob die folgenden Variablendefinitionen intelligent gemacht werden könnten, also machte ich mir eine Notiz. Bitte kommentieren Sie, wenn Sie sagen "es gibt einen besseren Weg".

STYLE_RED = 1
STYLE_BLUE = 2
STYLE_GREEN = 3
STYLE_YELLOW = 4
 :

Ich spreche von "Enum verwenden", aber da Enum in der Python 2.7-Serie nicht standardmäßig verwendet werden kann, möchte ich einige Tricks machen, um dies zu realisieren. (Für die Python 2.7-Serie wird auch ein Backport der Enum-Funktion namens enum34 bereitgestellt.)

Punkt

Diese Variablendefinitionen werden während der Entwicklung häufig wiederholt hinzugefügt und gelöscht, und es ist häufig erforderlich, alle Werte in den nachfolgenden Phasen zu verschieben, insbesondere wenn eine neue Definition zwischen definierten Variablen hinzugefügt wird.

STYLE_RED = 1
SYTLE_BLACK = 2  #Ich möchte es hier wirklich als 2 hinzufügen
STYLE_BLUE = 3   #Verschieben Sie den Wert in der letzten Stufe
STYLE_GREEN = 4  #Das ist auch..
STYLE_YELLOW = 5 #Das ist auch...
 :

Der Punkt ist, ob ein solches Hinzufügen / Löschen schnell erfolgen kann oder nicht.

Wie man Tapple benutzt

So was.

(
    RED,
    BLUE,
    GREEN,
    YELLOW,
) = range(0, 4)

print 'Color RED: %d' % RED

Da die Werte nicht einzeln angegeben werden, muss nicht jedes Mal durch Hinzufügen einer Variablen verschoben werden, sondern das zweite Argument der Funktion range () muss gleichzeitig geändert werden.

(
    RED,
    BLACK,  #hinzufügen
    BLUE,
    GREEN,
    YELLOW,
) = range(0, 5)  # 4->Wechseln Sie zu 5

Durch die Verwendung von tapple wird es zu einer invarianten Variablen, sodass es je nach Anwendung sehr nützlich ist. Es sieht aus wie eine Aufzählung, und Sie können sie nacheinander verarbeiten, indem Sie ihr einen Namen geben.

COLORS = (
    RED,
    BLUE,
      :
) = range(0, ...)

Zuweisen, während der Wert mithilfe einer Variablen erhöht wird

Da die Operation ++ in Python nicht verwendet werden kann, ist die folgende Implementierung nicht möglich.

int colorVal = 0
int RED = colorVal++;
int BLUE = colorVal++;
  :

Wenn Sie dies in Python tun, wird es (wahrscheinlich) so aussehen:

_cv = 0
RED = _cv = (_cv + 1)
BLUE = _cv = (_cv + 1)
GREEN = _cv = (_cv + 1)
YELLOW = _cv = (_cv + 1)

Da die rechte Seite der gleiche Ausdruck ist, ist es einfach, Variablen hinzuzufügen. Der Code sieht jedoch sowieso nicht gut aus, daher denke ich persönlich, dass die Methode zur Verwendung von Tapples Python-ähnlich ist. (Es ist am besten, enum gehorsam zu verwenden)

Recommended Posts

Erreiche Aufzählungsmodoki ohne Aufzählung
Überschussberechnung ohne Verwendung von%
Blasensortierung ohne Sortierung
Schreiben Sie FizzBuzz ohne "="
Schnelle Sortierung ohne Sortierung
Gammakorrektur ohne OpenCV