Når du skriver et program, skriver du sjelden all koden på en gang og kjører bare koden din på slutten. I stedet er det mest sannsynlig at du skriver litt kode, kjører programmet, skriver litt mer og gjentar til du er ferdig.
Effektivt vil du dele og erobre programmet ditt ved å fokusere på noen viktige deler og utelate andre, og deretter gå tilbake for å fylle ut de tomme feltene. For å gjøre dette effektivt i Python, må du bruke bestått-erklæringen, denne artikkelens emne.
Innholdsfortegnelse
Hva er «bestått»-erklæringen?
I motsetning til de fleste nøkkelord som forteller tolken å gjøre noe, er beståtterklæringen unik fordi den forteller tolken å ikke gjøre noe. Den brukes inne i blokker.
Blokker i Python er kodelinjer rykket inn under funksjoner, klasser eller kontrollflytsetninger. Kontrollflytsetninger er setninger som endrer den vanlige topp-til-bunn-kjøringen av et program ved enten å hoppe over kode ved å bruke betingelser eller gjenta kjøringen av kode ved hjelp av loops. De vanlige nøkkelordene for kontrollflyt i Python er hvis, for og mens.
Behovserklæring
Jeg forklarte tidligere at passerklæringen er en erklæring som ikke gjør noe. Men hvorfor skulle vi trenge en uttalelse som ikke gjør noe når vi bygger et program som gjør noe? I denne delen vil jeg forklare brukstilfellene for beståtterklæringen.
#1. Plassholder for fremtidig implementering
Som nevnt i innledningen, når du koder, er det nyttig å dele og erobre når du skriver programmet. Når du for eksempel skriver en funksjon, vil du kanskje lage en funksjonsoverskrift og komme tilbake for å skrive funksjonsteksten senere.
Men Python-tolken vil kjefte på deg hvis du prøver å kjøre koden. Dette er fordi Python forventer at kroppen til en funksjon, eller en hvilken som helst kodeblokk, skal inneholde minst én setning. Her er en eksempelfunksjon jeg har i en Python-fil:
def my_function(): # Will write the code later # For now there are no statements
Nå hvis jeg prøver å kjøre koden, vil jeg få en syntaksfeil som sier noe sånt som dette:
File "<ipython-input-1-58189b01193e>", line 3 # For now there are no statements ^ SyntaxError: incomplete input
Del-og-hersk-strategien vår vil ikke fungere hvis vi skriver alt på forhånd, men Python trenger at vi skriver minst noe. Passerklæringen hjelper i den forbindelse. Det er teknisk sett en uttalelse, så hvis du inkluderte den i en blokk, ville ikke Python kjeftet på deg. Og likevel gjør det ingenting, så du trenger ikke å bekymre deg for funksjonslogikken. Her er den forrige funksjonen med passerklæringen.
def my_function(): # Will write the code later # For now we only have the pass statement pass
Nå hvis vi kjører koden, får vi ingen feil.
Du kan også ringe funksjonen for å bekrefte at den ikke gjør noe.
I hovedsak er dette hovedbrukssaken til pass-setningen i Python – som en plassholder for tomme kodeblokker. Det trenger ikke bare være funksjoner, men fungerer med betingelser, looper og klasser.
#2. Implementering av abstrakte klasser og grensesnitt
Beståtterklæringen kan også brukes til å implementere en abstrakt klasse. En abstrakt klasse er en klasse som implementerer abstrakte metoder, og en abstrakt metode er en metode som er definert, men ikke implementert. Dette ligner på brukstilfellet definert ovenfor, der vi brukte bestått-erklæringen som en plassholder. Men i motsetning til det forrige tilfellet hvor beståtterklæringen bare var midlertidig, er den i dette tilfellet permanent.
Abstrakte klasser er basisklasser som definerer metodene superklassene som arver fra dem skal implementere. Abstrakte klasser implementerer ikke noe av logikken; de definerer metodene som utgjør klassene som er arvet fra dem. Som et resultat instansierer du ikke en basisklasse direkte.
Du bruker @abstractmethod-dekoratoren og ABC-klassen definert i abc-pakken for å lage abstrakte klasser i Python. Hvis du er ukjent med eller glemte dekoratører, her er en artikkel om dekoratører i Python.
Som jeg sa, abc-pakken definerer @abstractmethod-dekoratoren og ABC-klassen, som vi vil bruke som følger:
from abc import (abstractmethod, ABC) class BasicClass(ABC): @abstractmethod def basic_method(self): # Basic method is a method that any superclass of BasicClass should implement # So we simply define it here and not implement it # So in the body we use the pass statement so its valid code pass
BasicClass arver fra ABC-klassen. I tillegg har vi @abstracmethod-dekoratøren definert rundt basic_method. Nå kan du arve fra denne klassen og implementere basic_method.
class DerivedClass(BasicClass): def basic_method(self): print("Hello from the defined basic method")
Du kan deretter instansiere denne klassen og prøvekjøre basic_method.
my_object = DerivedClass() my_object.basic_method()
Når du kjører dette, skal du kunne få meldingen skrevet på skjermen.
Hello from the defined basic method
#3. Å gjøre ingenting med fanget unntak
Når programmet støter på en feil i Python, reiser det et unntak. Unntak er forstyrrende ettersom de får programmet til å krasje og stoppe kjøringen. Du kan imidlertid fange opp og håndtere unntak for å forhindre at programmet krasjer. Du kan bruke passerklæringen hvis du ikke ønsker å gjøre noe spesielt for å håndtere feilen. Her er et eksempel:
try: # code that will definitely raise an exception raise Exception('Some exception') except: pass
Hvis du kjører koden ovenfor, skjer ingenting. Dette er fordi unntaket heves og håndteres av koden i unntaksblokken. Men denne koden gjør ingenting, så ingenting skjer. Normalt, med unntak, ønsker du å logge dem eller håndtere dem på en elegant måte. Men hvis du ikke vil gjøre noe, er det slik du ville gjort det.
Hvordan skiller passerklæringen seg fra pause og fortsett?
Andre søkeord du kan støte på er pause og fortsett. Kort fortalt vil jeg forklare hva de gjør, slik at du kan se hvordan de skiller seg fra beståtterklæringen.
Pauseerklæring
Pausesetningen brukes til å bryte ut av en loop. Annenhver påfølgende iterasjon av sløyfen blir deretter kansellert. Anta for eksempel at du skrev en lineær søkefunksjon. Når elementet er funnet, er det ingen grunn til å fortsette å iterere til slutten av listen. Det ville være fornuftig å bryte ut av loopen. Så du vil bruke pauseerklæringen. Her er et eksempel på en lineær søkefunksjon:
def linear_search(values, search_value): for i in range(len(values)): if values[i] == search_value print("Value found at index", i) break
Fortsett uttalelse
Fortsett-setningen brukes til å hoppe over gjeldende iterasjon i loopen. Hvis du itererer over en liste med tall, vil programmet stoppe den gjeldende iterasjonen og hoppe over til neste iterasjon når programmet ditt møter en fortsettelse. Løkken fortsetter å løpe. Følgende er en eksempelfunksjon som bruker fortsettelse-setningen. Programmet dobler alle oddetall, så en liste inneholder kun partall.
def make_even(nums): for i in range(len(nums)): if nums[i] % 2 == 0: # If the num is already even we jump to the next iteration using continue continue # Only odd numbers will get to this point # We double the number so it becomes even nums[i] *= 2
Forhåpentligvis, ved å forstå pause- og fortsette-utsagn, klarte du å skille dem fra bestått-erklæringen.
Beste fremgangsmåter for bruk av godkjenningserklæringen
✅ Husk at passerklæringen vanligvis brukes som en midlertidig plassholder; husk å erstatte passerklæringen med den faktiske koden når den er klar.
✅ Hvis du bruker passerklæringen til noe annet enn som en midlertidig plassholder, ta med en kommentar som forklarer hvorfor den er der.
Siste ord
I denne artikkelen forklarte jeg passerklæringen i Python, et nyttig nøkkelord som lar deg dele og erobre når du skriver kode. Passerklæringen er også dekket i Pythons dokumentasjon.
Deretter kan du sjekke ut de vanlige Python-feiltypene og hvordan du løser dem.