Die PEP8- und Python-Community-Norm ist zu verwenden ALL_CAPS_CONSTANTS. Es ist ein allgemeiner visueller Hinweis, der seit Jahrzehnten in C, Java, Perl, PHP, Python, Bash und anderen Programmiersprachen und Shell-Umgebungen verwendet wird. Aber im modernen Online-Sprachgebrauch bedeutet ALL CAPS SCHREIEN . Und schreien ist unhöflich.
Python ist dagegen eher inkonsistent ALL_CAPS_CONSTANTS. JavaScript kann haben Math.PI, aber Python hat math.pi. Es gibt keine erkennbarere oder dauerhaftere Konstante als π. Oder überlegen Sie sys.version_info, welche Version von Python Sie verwenden. 100% konstant über die gesamte Lebensdauer Ihres Programms - weit mehr als PORToder MAX_ITERATIONSoder andere Konstanten , die Sie definieren würden. Oder wie wäre es sys.maxsize? Der maximale native Ganzzahlwert Ihrer Plattform ist nicht nur über ein oder zwei Programmläufe hinweg konstant, sondern über die Lebensdauer Ihrer Hardware.
Wenn diese Konstanten - einschließlich einiger wie π und e, die fundamentale Konstanten des Universums sind und sich nicht über die gesamte Ewigkeit ändern -, wenn sie klein geschrieben werden können, können auch andere Konstanten. Du kannst wählen.
Denken Sie daran, PEP8 ist ein Styleguide . Eine Richtlinie, kein Gesetz. Eine Richtlinie, gegen die häufig sogar Pythons Standardbibliothek verstößt. Und unter Berufung auf eine andere grundlegende Python-Richtlinie, PEP20 (auch bekannt als "The Zen of Python"):
- Schön ist besser als hässlich
- Lesbarkeit zählt
- Praktikabilität schlägt Reinheit.
Auf einer praktischen Anmerkung, wenn ein Programm des YELLY_CONSTANTund SHOUTY_PARAMETERbeginnt zu reiben, hilft es , sich daran zu erinnern , dass die alle Caps Konstanten sind in der Regel nicht wirklich dauerhafte platonisch Ideale , sondern Parameter eines Programmablaufs. Es gibt nichts wirklich Konstantes an PORT, SITENAMEoder NUMRUNS, und sie müssen nicht als eigenständige Programm-Globals verwaltet werden. Beispielsweise können sie als global zugreifbares Bündel von Programmparametern in ein Wörterbuch abgelegt werden:
config = {
'port': 80,
'sitename': "Bubba's Blog",
'numruns': 100,
}
Python verfügt außerdem über eine hervorragende Funktion zur Übergabe von Schlüsselwortparametern, mit der die Verwendung verringert wird APPARENTLY_ANGRY_GLOBAL_VARIABLES:
def process_data(sitename, port=80, numruns=100):
...
process_data("Bubba's Blog")
In der Praxis werden (oder sollten) viele dieser Werte aus Konfigurationsdateien, Betriebssystemumgebungsvariablen, Befehlszeilenargumenten oder anderen Quellen gelesen, um die Umkehrung des Steuerprinzips / -musters zu befriedigen . Aber das ist eine größere Geschichte für einen anderen Tag.