You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ibland är det svårt att förstå valideringsfelen pylint ger. Här tänkte jag samla förklaringar och exempel. Men det finns väldigt många valideringsfel man kan få och därför tar den kunskapen lång tid att samla och bygga upp.
Jag har hittat en webbsida som redan har samlat förklaringar och exempel för de flesta felen, utgå från den i första hand. Dock är vissa exempel och förklaring inte jättebra, om ni hittar ett fel ni inte förstår efter ni har läst om det. Skriv till mig så försöker jag lägga in bättre förklaring och exempel nedanför.
Ett valideringsfels uppbyggnad: <fil>:<radnummer>:<columnnummer>: <felkod>: <förklaring av felet> (<felnamn>)
fil - sökvägen till filen med felet
radnummer - rad där felet börjar. Kan vara fel om felet sträcker sig över flera rader eller om det orsakas av kod ovanför som pylint inte kan hantera. Men stämmer oftasts.
columnnummer - var på raden felet börjar.
felkod - varje fel pylint letar efter har ett unikt id. Som går att söka på för att hitta förklaring och lösningar.
förklaring av felet - pylints försök till att förklara vad som är fel. Det varierar hur bra pylint är på att förklara förklara felen.
felnamn - unikt namn för felet, som felkoden fast lite mer läsbart och förståligt. Går att söka på för att hitta förklaring och lösningar.
Exempel på ett fel: me/kmom04/marvin3/main.py:30:0: C0116: Missing function or method docstring (missing-function-docstring)
Om du får ett valideringsfel kopiera felkoden eller felnamnet. Sök på det på Google, "List of errors" länken ovanför eller i denna tråden.
C0123: Using type() instead of isinstance() for a typecheck. (unidiomatic-typecheck)
Svar på varför vi ska använda isinstance istället för type:
Skillnaden är egentligen inget vi har nytta av i denna (python) kursen, men är något som är relevant i den objektorienterade kursen efter jul. Efter jul kommer vi att lära oss att skapa egna klasser/datatyper och då kan vi göra en klass som bygger på en annan. Tänk, om vi har en klass som heter Animal och sen skapar vi en klass som heter Dog och Dog bygger/ärver Animal. Om vi då använder type funktionen när vi vill jämföra data typer då kommer vi få False om vi jämför en Dog med en Animal. Men oftast vill vi att det ska blir True, för att Dog bygger på Animal.
Numera är rekommenderat att man bara använder sig av isinstance() för att den gör samma sak och mer än vad type() gör.
C0116: Missing function or method docstring (missing-function-docstring)
Alla funktioner behöver innehålle en docstring där du förklarar vad koden som funktionen innehåller gör.
def a_func():
"""
Detta är en docstring som förklarar vad funktionen gör
"""
pass
R1710: Either all return statements in a function should return an expression, or none of them should. (inconsistent-return-statements)
Är vad den säger, om du har en funktion som innehåller en if-sats med elif och else, och du i något av de if-blocken har en return. Då borde du ha en return i alla if-blocken. Annars bör du skriva om koden så du inte har return i något if-block utan du har en return i slutet av funktionen.
Här har vi ingen return om båda if-satserna blir False. En lösning som typ alltid funkar är att skriva om koden så den bara innehåller en return och den ligger sist i funktionen.
Vi använder if-satsen för att kolla om något är sant eller falskt. Om det är sant sätter vi en variabel till sant, om det är falskt sätter vi variabeln till falskt. Här behövs inte if-satsen, den är onödig. Det räcker med att bara använda jämförelse operatorn och tilldela vad den returnerar till variabeln.
Rätt lösning
is_true=bar>baz
Raden ovanför gör samma sak som hela if-satsen och är bättre lösning.
Activity
AndreasArne commentedon May 31, 2021
Länkar till egna förklaring av fel:
AndreasArne commentedon Oct 6, 2022
C0123: Using type() instead of isinstance() for a typecheck. (unidiomatic-typecheck)
Svar på varför vi ska använda
isinstanceistället förtype:Skillnaden är egentligen inget vi har nytta av i denna (python) kursen, men är något som är relevant i den objektorienterade kursen efter jul. Efter jul kommer vi att lära oss att skapa egna klasser/datatyper och då kan vi göra en klass som bygger på en annan. Tänk, om vi har en klass som heter Animal och sen skapar vi en klass som heter Dog och Dog bygger/ärver Animal. Om vi då använder type funktionen när vi vill jämföra data typer då kommer vi få False om vi jämför en Dog med en Animal. Men oftast vill vi att det ska blir True, för att Dog bygger på Animal.
Numera är rekommenderat att man bara använder sig av isinstance() för att den gör samma sak och mer än vad type() gör.
AndreasArne commentedon Oct 6, 2022
C0116: Missing function or method docstring (missing-function-docstring)
Alla funktioner behöver innehålle en docstring där du förklarar vad koden som funktionen innehåller gör.
AndreasArne commentedon Oct 6, 2022
R1710: Either all return statements in a function should return an expression, or none of them should. (inconsistent-return-statements)
Är vad den säger, om du har en funktion som innehåller en if-sats med elif och else, och du i något av de if-blocken har en return. Då borde du ha en return i alla if-blocken. Annars bör du skriva om koden så du inte har return i något if-block utan du har en return i slutet av funktionen.
T.ex.
Här har vi ingen return om båda if-satserna blir
False. En lösning som typ alltid funkar är att skriva om koden så den bara innehåller en return och den ligger sist i funktionen.AndreasArne commentedon Jun 16, 2023
R1703 (simplifiable-if-statement)
Exempel på felaktigt kod,
Vi använder if-satsen för att kolla om något är sant eller falskt. Om det är sant sätter vi en variabel till sant, om det är falskt sätter vi variabeln till falskt. Här behövs inte if-satsen, den är onödig. Det räcker med att bara använda jämförelse operatorn och tilldela vad den returnerar till variabeln.
Rätt lösning
Raden ovanför gör samma sak som hela if-satsen och är bättre lösning.