Avslutt Python-programmet: 3 enkle metoder

Raske lenker

Det å vite hvordan man avslutter et program er en viktig ferdighet som kan anvendes i mange sammenhenger. For eksempel, når du utvikler et enkelt spill, kan det være nødvendig å avslutte programmet basert på spesifikke brukerhandlinger eller når visse betingelser er oppfylt. La oss undersøke forskjellene mellom tre metoder for å avslutte et Python-program.

1. Bruk av quit() eller exit()

En lettvint måte å terminere et Python-program på er ved å anvende enten quit() eller exit(), som er innebygde funksjoner. Ved å kalle enten quit() eller exit(), vil programmet umiddelbart stanse.

Funksjonene quit() og exit() har samme virkning, og valget mellom dem er i bunn og grunn et spørsmål om personlig preferanse.

Her er et eksempel på bruk av quit() for å avslutte et Python-program:

 for tall in range(10):
    if tall == 9:
        quit()
    print(tall)

Dette eksempelet skriver ut heltallene fra 0 til 8. Når «tall» blir 9, blir programmet avsluttet. quit() kan også brukes for å avslutte Python Integrated Development and Learning Environment (IDLE), som muliggjør interaktiv kjøring av Python-skript.

Det er viktig å merke seg at både quit() og exit() er avhengige av site-modulen, noe som betyr at de kanskje ikke er ideelle for bruk i produksjonsmiljøer. Metoden sys.exit(), som er beskrevet nedenfor, er et mer robust alternativ.

2. Bruk av sys.exit()

Ved å kalle sys.exit() i koden din, utløses et SystemExit-unntak i Python. Denne metoden aksepterer et valgfritt argument som spesifiserer en heltallskode (0 er standard). Du kan også sende et objekt, som resulterer i en returkode på 1 og som skriver ut objektets stringverdi til standard feilstrøm.

 import sys 

for tall in range(10):
    if tall == 5:
        sys.exit("Programmet er stoppet")
    print(tall)

Resultatet av dette programmet vil være som vist nedenfor:

Lik quit() og exit(), utløser sys.exit() også et SystemExit-unntak. Dette innebærer at du kan enten kalle sys.exit() eller utløse SystemExit(). Begge metodene aksepterer et valgfritt argument.

Det er lurt å sette seg inn i viktige Python-funksjoner hvis du ikke fullt ut forstår hvordan eksemplene ovenfor virker.

3. Bruk av os._exit()

Den tredje måten å stanse et program på er ved å anvende den spesielle os._exit()-metoden. Du kan spesifisere en utgangsstatuskode ved hjelp av et valgfritt argument. os._exit() er en del av os-modulen, og denne metoden avslutter prosessen umiddelbart uten å utføre de vanlige oppryddingsprosedyrene som normalt skjer ved avslutning av et Python-program.

Siden denne funksjonen ikke utfører standard opprydding, bør den kun brukes i spesielle situasjoner. Ifølge Pythons dokumentasjon er et godt eksempel bruk i en underordnet prosess etter en gaffel (en ny prosess opprettet ved hjelp av os.fork()).

Her er et kodeeksempel som viser hvordan os._exit()-funksjonen brukes for å avslutte et program:

 import os
import sys

def underprosess():
    print("Underprosess kjører.")
    os._exit(0)

def hovedprosess():
    print("Hovedprosess kjører.")

    try:
        pid = os.fork()

        if pid == 0:
            
            underprosess()
        else:
            
            print(f"Hovedprosess fortsetter med PID for underprosess: {pid}")
    except OSError as e:
        print(f"Gaffel feilet: {e}")
        sys.exit(1)

    print("Hovedprosess er ferdig.")

if __name__ == "__main__":
    hovedprosess()

Koden ovenfor genererer følgende utskrift:

Hvilken tilnærming er best for å avslutte et Python-program?

Python tilbyr flere metoder for å avslutte et program. Imidlertid har de fleste av disse metodene i bunn og grunn samme funksjon. Dette forenkler beslutningsprosessen når du skal implementere en avslutningsmekanisme i programmet ditt mens du lærer Python.

For å oppsummere, er sys.exit() å foretrekke for å avslutte et Python-program. Den utløser et SystemExit-unntak med en valgfri utgangskode.

Metodene quit() og exit() passer best for bruk i Python REPL (Read-Eval-Print Loop). Det er anbefalt å unngå dem i produksjonskode siden de er avhengige av site-modulen, som ikke alltid er tilgjengelig. os._exit() bør sjeldent være nødvendig, med mindre du jobber med kode som involverer oppdeling av prosesser.