Snabblänkar
Förmågan att avsluta ett program är en viktig färdighet som kan vara användbar i olika situationer. Om du till exempel utvecklar ett enkelt spel, kan du vilja stänga spelet efter en viss användarinteraktion eller när ett specifikt kriterium är uppfyllt. Lär dig skillnaderna mellan de tre sätten att avbryta ett Python-program.
1. Användning av quit() eller exit()
Ett av de enklaste sätten att avsluta ett Python-program är att använda antingen den inbyggda funktionen quit() eller exit(). Båda metoderna kommer att avsluta programmet omedelbart när de anropas.
Funktionerna quit() och exit() har samma effekt och valet mellan dem är enbart en fråga om personlig preferens.
Här är ett exempel på hur du kan använda quit()-funktionen för att avbryta ett Python-program:
for num in range(10): if num == 9: quit() print(num)
Detta program kommer att skriva ut siffrorna från 0 till 8 på skärmen. När variabeln ’num’ blir 9, kommer programmet att avslutas. Du kan även använda kommandot quit() för att avsluta Python Integrated Development and Learning Environment (IDLE), som tillåter dig att köra Python-kod interaktivt.
Det är viktigt att notera att både quit() och exit() är beroende av modulen ’site’. Därför är det rekommenderat att undvika deras användning i produktionsmiljöer. Metoden sys.exit(), som beskrivs nedan, är ett bättre alternativ för detta ändamål.
2. Använda sys.exit()
När funktionen sys.exit() anropas i ett Python-program, genereras ett SystemExit-undantag. Denna funktion accepterar ett valfritt argument i form av en heltals-utgångskod (0 är standardvärdet). Du kan även ange ett objekt som resulterar i utgångskoden 1 och att objektets strängrepresentation skrivs ut till standardfelströmmen.
import sys for num in range(10): if num == 5: sys.exit("Programmet avslutades av användaren") print(num)
Programmets utdata kommer att likna det här:
Liksom metoderna quit() och exit(), skapar sys.exit() också ett SystemExit-undantag. Det innebär att du antingen kan anropa sys.exit() direkt eller generera ett SystemExit-undantag. Båda alternativen tillåter ett valfritt argument.
För en djupare förståelse av koden ovan, kan du behöva repetera de grundläggande Python-funktionerna.
3. Använda os._exit()
En tredje metod för att stänga ett program är den speciella funktionen os._exit(). Denna funktion tar ett valfritt argument i form av en utgångsstatuskod. os._exit() kommer från os-modulen och avslutar processen omedelbart utan att utföra normala rengöringsrutiner som sker när ett Python-program avslutas.
Då den här funktionen avslutar programmet utan de vanliga städningsåtgärderna, bör den endast användas i speciella fall. Enligt Pythons dokumentation är ett lämpligt exempel i en underordnad process efter en förgrening (en ny process skapad med os.fork()).
Här är ett exempel som illustrerar hur man använder os._exit() för att avsluta ett program:
import os import sys def child_process(): print("Den underordnade processen körs.") os._exit(0) def main(): print("Den överordnade processen körs.") try: pid = os.fork() if pid == 0: child_process() else: print(f"Den överordnade processen fortsätter med barnprocessens PID: {pid}") except OSError as e: print(f"Förgreningen misslyckades: {e}") sys.exit(1) print("Den överordnade processen är färdig.") if __name__ == "__main__": main()
Den ovanstående koden kommer att producera följande utmatning:
Vilken metod bör du använda för att stänga ner ett Python-program?
Python erbjuder olika sätt att avsluta ett program. Majoriteten av dessa metoder utför liknande uppgifter. Detta bör förenkla valet av metod när du behöver lägga till en funktion för att stänga ner ditt program under inlärningen av Python.
Sammanfattningsvis bör sys.exit() vara ditt förstahandsval när du behöver avsluta ett program i Python. Den skapar ett SystemExit-undantag och tillåter en valfri utgångskod.
Metoderna quit() och exit() är mer lämpliga när du använder Python REPL. I produktionsmiljöer bör du undvika dem eftersom de är beroende av modulen ’site’, som kanske inte alltid är tillgänglig. os._exit() bör sällan användas, om du inte sysslar med processförgrening.