Aliohjelmat/funktiot Pythonissa
Pythonin funktiot eli aliohjelmat
Pythonissa funktioita tai aliohjelmia käytetään koodin modularisointiin, mikä tekee ohjelmasta helpommin ymmärrettävän, testattavan ja ylläpidettävän. Funktiot voivat ottaa parametreja, palauttaa arvoja tai tehdä molempia, riippuen siitä, miten ne on määritelty.
Pythonin funktioiden rakenne
Pythonissa funktio määritellään käyttämällä def
avainsanaa, jonka jälkeen tulee funktion nimi ja sulkumerkit. Sulkumerkkien sisällä ilmoitetaan funktiolle mahdollisesti annettavat parametrit, eroteltuna toisistaan pilkulla. Funktiorakenne on seuraavanlainen:
def function_name(parameter1, parameter2, ..., parameterN):
# funktion toiminnallisuus
return result # ei pakollinen
Miksi käytämme funktioita?
-
Koodin uudelleenkäyttö: Samaa koodia voi joutua käyttämään useissa paikoissa ohjelmassa. Funktion avulla tämän koodin voi määrittää vain kerran ja kutsua sitä tarvittaessa.
-
Koodin modularisointi: Suuret ohjelmat voidaan jakaa pienempiin ja hallittavampiin osiin, joita kutsutaan funktioiksi. Jokaisella funktiolla on tietty tehtävä, mikä tekee ohjelman ymmärtämisestä helpompaa.
-
Piilottaminen ja abstraktio: Funktiot piilottavat toteutuksen yksityiskohdat ja antavat meille mahdollisuuden keskittyä ohjelman korkeamman tason rakenteeseen. Voimme käyttäää jonkun muun tekemää pyörää tietämättä miten pyörä toimii.
Funktioiden argumentit
Funktioiden argumentit, tai parametrit, ovat arvoja, jotka funktio ottaa vastaan suorituksen yhteydessä. Ne määritellään funktion nimen jälkeisissä sulkeissa ja ne erotetaan toisistaan pilkulla. Funktion sisällä argumentteja voidaan käyttää samoin kuin muitakin muuttujia.
Funktioiden paluuarvot
Funktio voi myös palauttaa arvon käyttäen return
-avainsanaa. Tämä arvo voidaan sitten ottaa talteen muuttujaan tai käyttää suoraan esimerkiksi lausekkeessa. return
-avainsanan jälkeen oleva lauseke lasketaan, ja sen arvo palautetaan funktion kutsujalle.
Funktiot, jotka eivät ota parametreja eivätkä palauta arvoa
Tällaiset funktiot suorittavat jonkin toiminnon, mutta eivät ota syötteenä mitään arvoja eivätkä palauta mitään arvoa. Ne määritellään seuraavasti:
def greet():
print("Hello, world!") # Funktiota kutsutaan näin: greet() # Tulostaa: Hello, world!
Funktiot, jotka palauttavat arvon mutta eivät ota parametreja
Nämä funktiot suorittavat jonkin toiminnon ja palauttavat arvon, mutta eivät ota syötteenä mitään arvoja. Ne määritellään seuraavasti:
def get_greeting():
return "Hello, world!"
# Funktiota kutsutaan näin:
greeting = get_greeting()
print(greeting) # Tulostaa: Hello, world!
Funktiot, jotka ottavat parametreja, mutta eivät palauta arvoa
Nämä funktiot ottavat syötteenä yhden tai useampia arvoja, mutta eivät palauta arvoa. Ne määritellään seuraavasti:
def greet(name):
print(f"Hello, {name}!")
# Funktiota kutsutaan näin:
greet("Alice") # Tulostaa: Hello, Alice!
Funktiot, jotka ottavat parametreja ja palauttavat arvon
Nämä funktiot ottavat syötteenä yhden tai useampia arvoja ja palauttavat arvon. Ne määritellään seuraavasti:
def greet(name):
return f"Hello, {name}!"
# Funktiota kutsutaan näin:
greeting = greet("Alice")
print(greeting) # Tulostaa: Hello, Alice!
Pythonin __main__
-aliohjelma
Python-ohjelmointikielessä __main__
on erityinen, sisäänrakennettu moduuli, joka viittaa nykyiseen suoritettavaan skriptiin tai komentorivikäytössä suoritettavaan koodiin. Se on ohjelman pääpiste, jonka kautta muut moduulit ja paketit suoritetaan.
Pythonissa jokaisella moduulilla on nimi, ja tämä nimi on saatavilla moduulin sisällä erityisenä globaalina muuttujana nimeltä __name__
. Kun suoritamme skriptin suoraan komentoriviltä tai IDE:stä, __name__
-muuttujan arvoksi asetetaan "__main__"
. Jos moduuli taas tuodaan toisesta moduulista, __name__
-muuttujan arvoksi tulee sen moduulin nimi.
Tämä ominaisuus mahdollistaa skriptien tai moduulien suorittamisen eri konteksteissa. Esimerkiksi, voit määrittää koodin, joka suoritetaan vain, jos moduuli suoritetaan pääohjelmana eikä tuoda toisesta moduulista. Tämä on hyödyllistä, kun haluat määrittää koodin, joka suoritetaan vain, jos skriptiä käytetään itsenäisenä ohjelmana.
Seuraava esimerkki havainnollistaa tätä:
def hello_world():
print("Hello, world!")
# Tarkistetaan, onko tämä moduuli pääohjelma
if __name__ == "__main__":
hello_world()
Tässä esimerkissä hello_world
-funktion määrittely tapahtuu riippumatta siitä, suoritetaanko skripti suoraan vai tuodaanko se moduulina toisessa koodissa. Kuitenkin hello_world
-funktion suorittaminen tapahtuu vain, jos skriptiä suoritetaan suoraan pääohjelmana (__name__ == "__main__"
).
Tämä mahdollistaa koodin modulaarisen käytön, koska samaa kooditiedostoa voidaan käyttää sekä itsenäisenä skriptinä että moduulina, joka tuodaan toisesta skriptistä.