Sådan bruges ‘Pass’-erklæringen i Python

Når du skriver et program, skriver du sjældent al koden på én gang og kører først din kode til sidst. I stedet vil du sandsynligvis skrive noget kode, køre programmet, skrive noget mere og gentage, indtil du er færdig.

Effektivt vil du opdele og erobre dit program ved at fokusere på nogle væsentlige dele og udelade andre og derefter vende tilbage for at udfylde de tomme felter. For at gøre dette effektivt i Python skal du bruge beståelseserklæringen, denne artikels emne.

Hvad er ‘beståelseserklæringen’?

I modsætning til de fleste søgeord, der fortæller tolken at gøre noget, er beståelseserklæringen unik, fordi den fortæller tolken, at den ikke skal gøre noget. Det bruges inde i blokke.

Blokke i Python er kodelinjer indrykket under funktioner, klasser eller kontrolflow-sætninger. Kontrolflow-sætninger er sætninger, der ændrer den normale top-to-bot-udførelse af et program ved enten at springe over kode ved hjælp af conditionals eller gentage udførelse af kode ved hjælp af loops. De almindelige kontrolflownøgleord i Python er hvis, for og mens.

Behov for ‘Bestå’-erklæring

Jeg forklarede tidligere, at beståelseserklæringen er en erklæring, der ikke gør noget. Men hvorfor skulle vi have brug for en erklæring, der ikke gør noget, når vi bygger et program, der gør noget? I dette afsnit vil jeg forklare use cases for beståelseserklæringen.

#1. Pladsholder for fremtidig implementering

Som nævnt i introduktionen, når du koder, er det nyttigt at dele og erobre, når du skriver dit program. For eksempel, når du skriver en funktion, vil du måske oprette en funktionsoverskrift og vende tilbage for at skrive funktionsteksten senere.

  Sådan opretter du widgets med gennemsigtige baggrunde på iPhone

Men Python-fortolkeren vil råbe ad dig, hvis du prøver at køre koden. Dette skyldes, at Python forventer, at en funktions krop, eller en hvilken som helst kodeblok, indeholder mindst én sætning. Her er en eksempelfunktion, jeg har i en Python-fil:

def my_function():
    # Will write the code later
    # For now there are no statements

Hvis jeg nu prøver at udføre koden, får jeg en syntaksfejl, der siger noget som dette:

File "<ipython-input-1-58189b01193e>", line 3
    # For now there are no statements
                                     ^
SyntaxError: incomplete input

Vores opdel-og-hersk-strategi virker ikke, hvis vi skriver alt på forhånd, men Python har brug for, at vi i det mindste skriver noget. Beståelseserklæringen hjælper i den forbindelse. Det er teknisk set et statement, så hvis du inkluderede det i en blok, ville Python ikke råbe af dig. Og alligevel gør den ingenting, så du behøver ikke bekymre dig om funktionslogikken. Her er den forrige funktion med beståelseserklæringen.

def my_function():
    # Will write the code later
    # For now we only have the pass statement
    pass

Hvis vi nu kører koden, får vi ikke fejl.

Du kan også kalde funktionen til for at bekræfte, at den ikke gør noget.

I bund og grund er dette hovedanvendelsen af ​​pass-erklæringen i Python – som pladsholder for tomme kodeblokke. Det behøver ikke kun at være funktioner, men fungerer med conditionals, loops og klasser.

#2. Implementering af abstrakte klasser og grænseflader

Beståelseserklæringen kan også bruges til at implementere en abstrakt klasse. En abstrakt klasse er en klasse, der implementerer abstrakte metoder, og en abstrakt metode er en metode, der er defineret, men ikke implementeret. Dette svarer til use casen defineret ovenfor, hvor vi brugte beståelseserklæringen som en pladsholder. Men i modsætning til det tidligere tilfælde, hvor beståelseserklæringen kun var midlertidig, er den i dette tilfælde permanent.

Abstrakte klasser er basisklasser, der definerer de metoder, superklasserne, der arver fra dem, skal implementere. Abstrakte klasser implementerer ikke nogen af ​​logikken; de definerer de metoder, der udgør de klasser, der er arvet fra dem. Som følge heraf instansierer du ikke en basisklasse direkte.

  Sådan tilpasser du hakket på iPhone X

Du bruger @abstractmethod-dekoratoren og ABC-klassen defineret i abc-pakken til at oprette abstrakte klasser i Python. Hvis du ikke kender til eller har glemt alt om dekoratører, er her en artikel om dekoratører i Python.

Som jeg sagde, definerer abc-pakken @abstractmethod-dekoratoren og ABC-klassen, som vi vil bruge 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. Derudover har vi @abstracmethod-dekoratøren defineret omkring basic_method. Nu kan du arve fra denne klasse og implementere basic_method.

class DerivedClass(BasicClass):
    def basic_method(self):
        print("Hello from the defined basic method")

Du kan derefter instansiere denne klasse og prøvekøre basic_method.

my_object = DerivedClass()

my_object.basic_method()

Når du kører dette, bør du være i stand til at få beskeden skrevet på skærmen.

Hello from the defined basic method

#3. At ikke gøre noget med fangede undtagelser

Når programmet støder på en fejl i Python, rejser det en undtagelse. Undtagelser er forstyrrende, da de får programmet til at gå ned og stoppe eksekveringen. Du kan dog fange og håndtere undtagelser for at forhindre programmet i at gå ned. Du kan bruge beståelseserklæringen, hvis du ikke ønsker at gøre noget særligt for at håndtere fejlen. Her er et eksempel:

try:
    # code that will definitely raise an exception
    raise Exception('Some exception')
except:
    pass

Hvis du kører ovenstående kode, sker der ikke noget. Dette skyldes, at undtagelsen hæves og håndteres af koden i undtagelsesblokken. Men denne kode gør ingenting, så der sker ikke noget. Normalt, med undtagelser, vil du gerne logge dem eller håndtere dem med ynde. Men hvis du ikke vil gøre noget, er det sådan, du ville gøre det.

  Top 7 Account-Based Marketing-værktøjer (ABM) i 2022

Hvordan adskiller beståelseserklæringen sig fra pause og fortsæt?

Andre søgeord, du kan støde på, er pause og fortsæt. Kort sagt vil jeg forklare, hvad de gør, så du kan se, hvordan de adskiller sig fra beståelseserklæringen.

Pauseerklæring

Pausesætningen bruges til at bryde ud af en løkke. Hver anden efterfølgende iteration af løkken annulleres derefter. Antag for eksempel, at du skrev en lineær søgefunktion. Når elementet er fundet, er der ingen grund til at fortsætte med at iterere til slutningen af ​​listen. Det ville give mening at bryde ud af løkken. Så du ville bruge pauseerklæringen. Her er et eksempel på en lineær søgefunktion:

def linear_search(values, search_value):
    for i in range(len(values)):
        if values[i] == search_value
            print("Value found at index", i)
            break

Fortsæt erklæring

Fortsæt-sætningen bruges til at springe den aktuelle iteration over i løkken. Hvis du itererer over en liste med tal, når dit program støder på en fortsæt-sætning, stopper det den aktuelle iteration og springer over til næste iteration. Løkken fortsætter med at køre. Det følgende er en eksempelfunktion, der bruger fortsæt-sætningen. Programmet fordobler alle ulige tal, så en liste kun indeholder lige tal.

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åbentlig lykkedes det dig ved at forstå pause- og fortsættelseserklæringerne at adskille dem fra beståelseserklæringen.

Bedste fremgangsmåder til brug af godkendelseserklæringen

✅ Husk at beståelseserklæringen normalt bruges som en midlertidig pladsholder; husk at udskifte adgangserklæringen med den faktiske kode, når den er klar.

✅ Hvis du bruger beståelseserklæringen til andet end som en midlertidig pladsholder, skal du inkludere en kommentar, der forklarer, hvorfor den er der.

Afsluttende ord

I denne artikel forklarede jeg beståelseserklæringen i Python, et nyttigt søgeord, der gør dig i stand til at dele og erobre, når du skriver kode. Beståelseserklæringen er også dækket af Pythons dokumentation.

Tjek derefter de almindelige Python-fejltyper, og hvordan du løser dem.