Ich pylint
gewöhne mich immer noch an Python-Konventionen und verwende es , um meinen Code pythonischer zu gestalten, aber ich bin verwirrt darüber, dass pylint keine Variablennamen für einzelne Zeichen mag. Ich habe ein paar Schleifen wie diese:
for x in x_values:
my_list.append(x)
und wenn ich laufe pylint
, bekomme ich Invalid name "x" for type variable (should match [a-z_][a-z0-9_]{2,30}
- das deutet darauf hin, dass ein gültiger Variablenname zwischen 3 und 31 Zeichen lang sein muss, aber ich habe die PEP8-Namenskonventionen durchgesehen und sehe nichts Explizites in Bezug auf einzelne Kleinbuchstaben und ich sehe viele Beispiele, die sie verwenden.
Fehlt mir etwas in PEP8 oder ist dies ein Standard, der nur für Pylint gilt?
quelle
_
Halten temporärer Werte ist ein Antimuster. Unterstrichvariablen geben irrelevante / verworfene Werte an, keine temporäre Zuweisung wiei
oderx
. Darüber hinaus hat es im Interpreter eine besondere Bedeutung, den letzten Wert des letzten Ausdrucks zu halten.Ein bisschen mehr Details zu dem, was gurney alex bemerkt hat: Sie können PyLint anweisen, Ausnahmen für Variablennamen zu machen, die (Sie schwören , kleiner Finger ) vollkommen klar sind, obwohl sie weniger als drei Zeichen enthalten. Suchen Sie in Ihrer pylintrc- Datei unter der
[FORMAT]
Überschrift:Hier sind pk (für Primärschlüssel), x und y Variablennamen, die ich hinzugefügt habe.
quelle
pylint 1.8.3
. pylint.pycqa.org/en/1.8/user_guide/options.htmlreturn [customer_address for customer_address in thing.get_customer_addresses() if customer_address.is_proper()]
vsreturn [a for a in thing.get_customer_addresses() if a.is_proper()]
Ich behaupte, letzteres ist klarer, wie aus dem Kontext ersichtlich ist. Im Allgemeinen sollte die variable Länge mit dem Umfang der Variablen korrelieren.In stark typisierten Sprachen können 1-Buchstaben-Namensvariablen in Ordnung sein, da Sie den Typ in der Regel neben dem Namen in der Deklaration der Variablen oder im Funktions- / Methodenprototyp erhalten:
In Python erhalten Sie diese Informationen nicht. Wenn Sie also schreiben:
Sie lassen dem Wartungsteam absolut keine Ahnung, was die Funktion tun könnte, wie sie aufgerufen wird und was sie zurückgibt. In Python verwenden Sie daher häufig beschreibende Namen:
und Sie fügen sogar eine Dokumentzeichenfolge hinzu, die erklärt, was das Zeug tut und welche Typen erwartet werden.
quelle
with open(FILE) as f: items = f.readlines()
zum Beispiel, wo die Variablef
wirklich offensichtlich ist, aber ich bekomme Pylint-Warnungen. Dies brachte mich dazu, zu flake8 zu wechseln.f
ist völlig anders als eineOptionList
aufgerufene c. Besonders wenn ich es nicht umbenennen kann,function
weil es einen eingebauten Schatten hat.Heutzutage gibt es auch eine Option, um regulären Ausdruck zu überschreiben. Dh wenn Sie einzelne Zeichen als Variablen zulassen möchten:
So
pylint
wird PEP8 entsprechen und wird nicht bringen zusätzliche Verletzungen an der Spitze. Sie können es auch hinzufügen.pylintrc
.quelle
> 1.8.3
scheint dies die Antwort zu sein. Kann dies auch in deine.pylintrc
permanente Konfiguration einfügen :variable-rgx=[a-z0-9_]{1,30}$
.Der tiefere Grund ist , dass Sie sich vielleicht erinnern , was Sie beabsichtigt
a
,b
,c
,x
,y
, undz
zu meinen , wenn Sie Ihren Code geschrieben, aber wenn andere es lesen, oder sogar , wenn Sie zurückkommen , um Ihren Code, wird der Code viel besser lesbar , wenn Sie geben es ist ein semantischer Name. Wir schreiben keine Sachen einmal an eine Tafel und löschen sie dann. Wir schreiben Code, der möglicherweise ein Jahrzehnt oder länger anhält und viele, viele Male gelesen wird.Verwenden Sie semantische Namen. Semantische Namen, die ich verwendet habe, waren wie
ratio
,denominator
,obj_generator
,path
usw. Es kann eine zusätzliche oder zwei Sekunden dauern , sie zu geben, aber die Zeit sparen Sie versuchen, herauszufinden , was Sie geschrieben haben sogar eine halbe Stunde von da ist es wert .quelle