Ich bin ein Python-Programmierer, der in erster Linie Pylint zum Löschen von Quellcode verwendet. Ich kann alle Warnungen bis auf eine beseitigen: Ungültiger Name für eine Konstante. Das Ändern des Namens in Großbuchstaben behebt das Problem, aber soll ich das wirklich tun? Wenn ich das mache, finde ich, dass mein Code hässlich aussieht, da die meisten Variablen konstant sind (laut Pylint).
python
coding-style
coding-standards
conventions
Abhishek Kumar
quelle
quelle
NOTES_DIRECTORY = argv[1] chdir(NOTES_DIRECTORY) FILES = glob('*.txt') RAND_FILE = choice(FILES) with open(RAND_FILE) as notes_file: POINTS = notes_file.readlines() RAND_POINT = choice(POINTS)
Antworten:
Sie schreiben wahrscheinlich folgenden Code:
Sie sollten diesen Code in eine Funktion verschieben:
Pylint geht davon aus, dass sich der Code, der die Arbeit tatsächlich erledigt, in einer Funktion befindet. Da Sie diesen Code auf der obersten Ebene Ihres Codes haben, anstatt innerhalb einer Funktion, wird er verwirrt.
Generell ist es besser, innerhalb einer Funktion zu arbeiten, als auf der obersten Ebene. Auf diese Weise können Sie Ihre Aktivitäten besser organisieren und leichter wiederverwenden. Sie sollten wirklich nur Code haben, der einen Algorithmus außerhalb einer Funktion in einem schnellen und unsauberen Skript ausführt.
quelle
Ja. Gemäß der PEP8-Regel für Konstanten :
Lange Version:
In der Python-Community gibt es (wie in vielen anderen Communities) Konventionen zum Schreiben von Code. Dies unterscheidet sich vom Arbeitscode : Auch wenn Sie Ihre Konstanten in Kleinbuchstaben schreiben, funktioniert Ihr Code immer noch.
Es gibt jedoch einen Konsens in der Gemeinschaft (wie in PEP8 dokumentiert), der mit Tools wie Pylint "durchgesetzt" wird . Wenn Sie auf Ihr eigenes Glück programmieren, können Sie die Hinweise, die Ihnen pylint gibt, vernachlässigen. Wenn Sie einen offenen Austausch mit der Community wünschen, auch bekannt als »jemand außer mir sollte meinen Code verwenden«, sollten Sie Ihren Code gemäß PEP8 vorbereiten.
quelle
pylint
, etwas falsch zu machen. Python bietet keine Möglichkeit, eine Konstante von einer Variablen zu unterscheiden, ansonsten wird erwartet, dass die Konstante immer den gleichen Wert hat.pylint
Es wird davon ausgegangen, dass alles, was nur einmal festgelegt wird und sich nie ändert, eine Konstante ist. Wenn es jedoch nicht als Konstante gedacht ist, kann dies nur ein Artefakt der Implementierung sein. Insbesondere der im Kommentar zur Frage angegebene Code weist Werte auf, die bei jedem Durchlauf unterschiedlich sind. Daher sollten sie nicht als Konstanten betrachtet werden, auch wenn Pylint dies für möglich hält.const
Schlüsselwort. Obwohl der Anfangswert anders ist, als vielleichtPI
.pylint
die letztere angenommen wird, selbst wenn die erstere der Fall ist.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 habenMath.PI
, aber Python hatmath.pi
. Es gibt keine erkennbarere oder dauerhaftere Konstante als π. Oder überlegen Siesys.version_info
, welche Version von Python Sie verwenden. 100% konstant über die gesamte Lebensdauer Ihres Programms - weit mehr alsPORT
oderMAX_ITERATIONS
oder andere Konstanten , die Sie definieren würden. Oder wie wäre essys.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"):
Auf einer praktischen Anmerkung, wenn ein Programm des
YELLY_CONSTANT
undSHOUTY_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 anPORT
,SITENAME
oderNUMRUNS
, 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:Python verfügt außerdem über eine hervorragende Funktion zur Übergabe von Schlüsselwortparametern, mit der die Verwendung verringert wird
APPARENTLY_ANGRY_GLOBAL_VARIABLES
: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.
quelle
Ja, das ist in den meisten Programmiersprachen durchaus üblich (zumindest in denen, die ich verwende).
Sie können auf diesen Google-Link verweisen, um einen gemeinsamen Stil zwischen Entwicklern desselben Teams zu teilen.
Es wird empfohlen, zu verwenden
quelle