Wie deklariere ich eine Konstante in Python?
In Java machen wir:
public static final String CONST_NAME = "Name";
Wie deklariere ich eine Konstante in Python?
In Java machen wir:
public static final String CONST_NAME = "Name";
In Python ist eine Konstante einfach eine Variable mit einem Namen in Großbuchstaben, wobei Wörter durch das Unterstrichzeichen getrennt sind,
z.B.
DAYS_IN_WEEK = 7
Der Wert ist veränderlich, denn du kannst ihn ändern. Aber wenn die Regeln für den Namen dir sagen, dass es eine Konstante ist, warum würdest du das tun? Ich meine, es ist schließlich dein Programm!
Dies ist der Ansatz, der in Python durchgehend verfolgt wird. Es gibt kein private
Schlüsselwort aus demselben Grund. Setze den Namen mit einem Unterstrich davor und du weißt, dass es als privat gedacht ist. Code kann die Regel brechen...genau wie ein Programmierer das private Schlüsselwort sowieso entfernen könnte.
Python hätte ein const
Schlüsselwort hinzufügen können... aber ein Programmierer könnte das Schlüsselwort entfernen und dann die Konstante ändern, wenn er möchte, aber warum das tun? Wenn du die Regel brechen willst, könntest du die Regel sowieso ändern. Aber warum die Regel brechen, wenn der Name die Absicht klar macht?
Vielleicht gibt es einen Unittest, bei dem es sinnvoll ist, einen Wert zu ändern? Um zu sehen, was passiert, wenn es eine 8-Tage-Woche gibt, obwohl in der realen Welt die Anzahl der Tage in der Woche nicht geändert werden kann. Wenn die Sprache dich daran hindern würde, eine Ausnahme zu machen, wenn es nur diesen einen Fall gibt, in dem du die Regel brechen musst...dann müsstest du aufhören, es als Konstante zu deklarieren, obwohl es immer noch eine Konstante in der Anwendung ist, und es gibt nur diesen einen Testfall, der sieht, was passiert, wenn es geändert wird.
Der Name in Großbuchstaben zeigt dir, dass es als Konstante gedacht ist. Das ist wichtig. Nicht eine Sprache, die Einschränkungen für Code erzwingt, den du sowieso ändern kannst.
Das ist die Philosophie von Python.
Es gibt keinen perfekten Weg, um das zu tun. Soweit ich weiß, werden die meisten Programmierer einfach den Bezeichner groß schreiben, so dass PI = 3.142 leicht als Konstante verstanden werden kann.
Andererseits, wenn Sie etwas möchten, das sich tatsächlich wie eine Konstante verhält, bin ich mir nicht sicher, ob Sie es finden werden. Bei allem, was Sie tun, wird es immer eine Möglichkeit geben, die "Konstante" zu bearbeiten, so dass es nicht wirklich eine Konstante ist. Hier ist ein sehr einfaches, schmutziges Beispiel:
def define(name, value):
if (name + str(id(name))) not in globals():
globals()[name + str(id(name))] = value
def constant(name):
return globals()[name + str(id(name))]
define("PI",3.142)
print(constant("PI"))
Dies scheint eine Konstante im PHP-Stil zu machen.
Im Grunde genommen reicht es aus, dass jemand den Wert ändern kann:
globals()["PI"+str(id("PI"))] = 3.1415
Dies gilt für alle anderen Lösungen, die Sie hier finden werden - selbst für die cleveren, die eine Klasse erstellen und die Methode zum Festlegen des Attributs neu definieren - es wird immer einen Weg geben, sie zu umgehen. So ist Python einfach.
Meine Empfehlung ist, all den Ärger zu vermeiden und einfach Ihre Bezeichner groß zu schreiben. Es wäre dann zwar keine richtige Konstante, aber dann wäre nichts eine.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.