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 PORT
oder MAX_ITERATIONS
oder 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_CONSTANT
und SHOUTY_PARAMETER
beginnt 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
, SITENAME
oder 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.