Så fungerar pass i Python och när du ska använda det

27 oktober 2026

Kod i Python visar en klass för en virtuell maskin. Här finns en funktion för att inte göra något, `no_operation`, och en initieringsmetod som sätter upp RAM och CPU.

När du skissar på en funktion men ännu inte har bestämt vad den ska göra kan den tomma kodraden stoppa dig: Python kräver ett indenterat block. pass löser det tillfälligt, men bara om du vill att koden på den platsen inte ska göra någonting just nu.

Flödesschema som visar hur man itererar genom tal i `range(1, 71)` i Python. Om ett tal är en multipel av 7, skrivs det ut. Annars passeras det.

pass lämnar ett block tomt utan att avbryta programmet

  • Fyller ett tomt block när Python kräver en sats.
  • Hoppar inte över resten av funktionen eller loopen.
  • Skiljer sig från return, continue och break.
  • Kan dölja fel om det används för att ignorera undantag.

Python kräver en sats även när blocket ska vara tomt

En funktion, klass eller villkorsgren kan inte lämnas utan innehåll. Om du skriver en rubrik och kolon men ingen indenterad sats får du ett syntaxfel. pass fungerar som en tom sats: Python accepterar blocket och fortsätter utan att utföra någon åtgärd där.

def skapa_rapport():
    pass

Funktionen går nu att definiera och anropa, men den skapar ingen rapport. Jag tycker att pass är tydligast när tomheten är avsiktlig eller tillfällig och blocket behöver finnas för att koden ska kunna byggas vidare.

Samma princip fungerar i en klass eller i en gren av ett villkor. Den officiella Python Language Reference beskriver pass som en nulloperation, alltså en sats som inte gör något när den körs.

if användare_är_inloggad:
    pass
else:
    visa_inloggning()

Här händer ingenting i den första grenen. Om avsikten egentligen är att visa en startsida eller hämta användardata finns arbetet fortfarande kvar, även om programmet kör utan syntaxfel.

pass avbryter inte funktionen eller loopen

Namnet kan ge intryck av att Python ska gå vidare förbi resten av blocket. Så fungerar det inte. pass gör ingenting på just den raden, och körningen fortsätter med nästa sats.

for namn in ["Ada", "Bo"]:
    pass
    print(namn)

Loopen skriver ut båda namnen. Om du vill hoppa till nästa varv använder du continue; om du vill avsluta loopen använder du break. Inne i en funktion avslutar return anropet och kan skicka tillbaka ett värde. Det är olika kontrollflöden, inte utbytbara varianter av en tom sats.

SituationVad satsen görVälj den när
En gren ska göra ingentingpass fortsätter efter satsenDen tomma grenen är avsiktlig
Resten av varvet ska hoppas övercontinue börjar nästa varvAktuellt objekt inte ska behandlas vidare
Loopen ska stoppasbreak avslutar närmaste loopDu har hittat det du letade efter
Funktionen ska avslutasreturn lämnar funktionsanropetFunktionen är klar eller ska lämna tillbaka ett resultat

Den skillnaden är särskilt användbar när ett villkor inne i en loop filtrerar bort vissa poster. Dokumentationen om enkla Python-satser anger att continue går till nästa varv och att break avslutar den närmaste loopen. Välj alltså efter önskat flöde, inte efter vilken sats som råkar få bort syntaxfelet.

En tom undantagshanterare kan svälja felet

Den mest riskabla platsen för pass är ofta ett except-block. Koden nedan fångar ett fel och gör sedan ingenting med det, så programmet kan fortsätta utan att du ser varför inläsningen misslyckades.

try:
    pris = int(indata)
except ValueError:
    pass

Om indata exempelvis innehåller text i stället för en siffra skapas ingen användbar variabel för priset. Felet försvinner ur sikte, och en senare rad kan krascha av en helt annan anledning. För ett formulär är det oftast bättre att visa ett begripligt meddelande eller ge värdet ett tydligt standardbeteende.

SituationTrolig följdGör så här
En funktion har bara passAnropet gör ingenting och returnerar implicit NoneMarkera arbetet som ofärdigt eller implementera funktionen
pass står i en loop där poster ska filtreras bortResten av loopvarvet körs ändåAnvänd continue om varvet ska hoppas över
Ett except-block innehåller passUndantaget ignoreras och felet kan bli svårt att hittaHantera felet, logga det eller visa ett relevant meddelande
En villkorsgren är tom med avsiktProgrammet fortsätter utan åtgärd i grenenBehåll pass och kommentera varför inget ska ske

pass, ... och en kommentar fyller olika roller

En kommentar förklarar något för den som läser koden, men räknas inte som en Python-sats. Därför räcker inte detta som kropp i en funktion:

def hämta_data():
    # Implementeras senare

Lägg till pass om funktionen behöver kunna köras innan implementationen finns. Utan den tomma satsen återstår ett syntaxfel.

Du kan också skriva ellipsen ... som en sats. I den rollen fungerar den som en möjlig platshållare, men den är Python-objektet Ellipsis, inte samma särskilda sats som pass. Den officiella Python-handledningen nämner ellipsen som ett möjligt alternativ i vissa platshållare, men pass säger rakare att blocket inte ska göra någonting.

def hämta_data():
    ...

För ett kort kodutkast kan båda uttrycken vara begripliga. Om koden ska vara lätt att läsa för ett team skulle jag välja pass när blocket verkligen är tomt, och lägga en kommentar där det behövs för att förklara varför.

Låt platshållaren synas innan den blir kvar

pass är praktiskt när du bygger skelettet till ett program, men det kan också få ofärdig logik att se färdig ut. En tom funktion kraschar kanske inte, men den uppfyller inte uppgiften. Jag tycker därför att en kort kommentar som anger vad som saknas är bättre än en tyst platshållare som ingen längre reagerar på.

När en kodrad inte ska utföra någon åtgärd är pass rätt verktyg. När något ska hoppas över, avslutas eller hanteras behöver du i stället välja den sats som faktiskt styr programmets flöde.

Vanliga frågor

Python kräver en indenterad sats i en funktion, klass eller villkorsgren. Använd pass när blocket avsiktligt ska vara tomt eller när du bygger en struktur som ska fyllas i senare. Funktionen kan då definieras och anropas, men gör inget arbete och returnerar implicit None.
pass gör ingenting på den raden och körningen fortsätter med nästa sats. continue hoppar till nästa varv i en loop, medan break avslutar den närmaste loopen. return avslutar ett funktionsanrop och kan skicka tillbaka ett värde.
Om ett except-block innehåller pass fångas undantaget utan att hanteras eller visas. Vid exempelvis int(indata) kan ett ogiltigt värde ge ett ValueError, som då försvinner ur sikte. Hantera felet, logga det eller visa ett begripligt meddelande i stället.
En kommentar räknas inte som en Python-sats, så den räcker inte ensam som innehåll i en funktion. Ellipsen ... kan användas som en sats och platshållare, men är Python-objektet Ellipsis, inte samma särskilda sats som pass. Välj pass när du vill säga tydligt att blocket inte ska göra någonting.
Betygsätt artikeln

Genomsnitt: 0.0 / 5 · 0 betyg

Taggar

python syntax kontrollflöde undantagshantering
Kommentarer (0)
Lägg till en kommentar