3 начина да завршите програм у Питхон-у

Brzi Pregled Metoda za Završetak Programa

Sposobnost zaustavljanja programa je ključna i nalazi primenu u raznim situacijama. Na primer, ako razvijate jednostavnu igru, možete je prekinuti na osnovu određenog korisničkog unosa ili kada je neki preduslov ispunjen. Istražimo razlike između tri načina za obustavljanje Python programa.

1. Upotreba `quit()` ili `exit()`

Jedan od najdirektnijih načina za okončanje Python programa je korišćenje ugrađenih funkcija, `quit()` ili `exit()`. Pozivom bilo koje od ovih funkcija, program će se trenutno prekinuti.

Funkcije `quit()` i `exit()` izvršavaju potpuno isti zadatak, tako da je izbor između njih stvar ličnih preferencija.

Evo demonstracije kako koristiti `quit()` za završetak Python programa:

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

Gornji program će ispisati cele brojeve od 0 do 8 na konzoli. Kada broj dostigne 9, program se zaustavlja. Takođe možete koristiti naredbu `quit()` za izlazak iz Python integrisanog razvojnog okruženja (IDLE), koje omogućava interaktivno izvršavanje Python skripti.

Važno je napomenuti da se i `quit()` i `exit()` oslanjaju na modul `site`, što ih čini neprikladnim za produkcijska okruženja. Umesto njih, preporučuje se sledeći metod, `sys.exit()`, kao bolja alternativa.

2. Korišćenje `sys.exit()`

Kada u svom programu pozovete `sys.exit()`, Python generiše izuzetak `SystemExit`. Funkcija prihvata opcioni argument za specificiranje celobrojnog izlaznog koda (podrazumevano 0). Takođe možete proslediti objekat, koji će rezultirati izlaznim kodom 1, i ispisati vrednost string reprezentacije objekta na standardnu grešku.

 import sys 

for broj in range(10):
    if broj == 5:
        sys.exit("Program je završen.")
    print(broj)

Izlaz ovog programa će izgledati ovako:

Slično metodama `quit` i `exit`, `sys.exit()` takođe izaziva `SystemExit` izuzetak. To znači da možete pozvati `sys.exit()` ili direktno podići `SystemExit()`. Obe opcije prihvataju opcion argument.

Ako niste upoznati sa načinom na koji gornji kod funkcioniše, trebali biste da se upoznate sa ključnim funkcijama u Pythonu.

3. Upotreba `os._exit()`

Treći način za izlazak iz programa je pomoću specijalizovane funkcije `os._exit()`. Možete joj proslediti opcioni argument kako biste definisali izlazni statusni kod. Funkcija `os._exit()` dolazi iz modula `os` i odmah prekida proces bez izvršavanja uobičajenih procedura čišćenja koje se odvijaju prilikom zatvaranja Python programa.

S obzirom na to da ova funkcija izlazi bez standardnog čišćenja, njena upotreba treba da bude ograničena na specifične scenarije. Prema Python dokumentaciji, dobar primer je u podređenom procesu nakon pozivanja `os.fork()` (kreiranje novog procesa).

Sledi primer korišćenja funkcije `os._exit()` za prekid programa:

 import os
import sys

def proces_dete():
    print("Proces dete je pokrenut.")
    os._exit(0)

def glavni_program():
    print("Matični proces je pokrenut.")

    try:
        pid = os.fork()

        if pid == 0:
            
            proces_dete()
        else:
            
            print(f"Matični proces nastavlja sa PID-om procesa deteta: {pid}")
    except OSError as e:
        print(f"Greška prilikom grananja: {e}")
        sys.exit(1)

    print("Matični proces je završen.")

if __name__ == "__main__":
    glavni_program()

Gornji kod će rezultirati sledećim izlazom:

Koju Metodu Izabrati za Prekidanje Python Programa?

Python pruža razne načine za zaustavljanje izvršavanja programa. Ipak, mnogi od ovih metoda obavljaju istu osnovnu funkciju. Ovo olakšava odluku kada je potrebno implementirati mehanizam za izlazak iz programa dok učite Python.

Ukratko, `sys.exit()` bi trebao biti vaš preferirani metod za okončavanje programa u Pythonu. On aktivira izuzetak `SystemExit` sa opcionim izlaznim kodom.

Funkcije `quit()` i `exit()` su najprikladnije za upotrebu u Python REPL okruženju. Trebalo bi izbegavati njihovo korišćenje u produkciji, jer zavise od modula `site`, koji možda nije uvek dostupan. Retko će biti potrebno da koristite `os._exit()`, osim ako ne radite sa kodom koji uključuje grananje procesa.