Python Ohjelman Rakenne ja muuttujat

Koodin Sisentäminen

Pythonissa koodin sisentäminen ei ole vain esteettinen valinta, vaan sillä on syntaktinen merkitys. Toisin kuin monet muut kielet, joissa lohkot (kuten if-lausekkeet tai funktiot) merkitään aaltosulkeilla {}, Pythonissa ne määritellään sisennyksen avulla.

  • Oikea sisentäminen on välttämätöntä koodin toimivuudelle.
  • Yleisesti ottaen yksi sisennystaso on 4 välilyöntiä (tai yksi sarkain/tabulaattori, mutta 4 välilyöntiä on suositeltavampi).

Esimerkki:

def funktio():
    if True:
        print("Sisentäminen on tärkeää!")

Kommentointi

Kommentit ovat koodin osia, joita ei suoriteta. Ne ovat tärkeitä, koska ne auttavat selittämään koodin toimintaa ja tarkoitusta muille kehittäjille (tai itsellesi tulevaisuudessa).

  • Yksiriviset kommentit alkavat #-merkillä.

 

# Tämä on kommentti
print("Tämä ei ole kommentti")  # Tämä on myös kommentti

 

  •  Moniriviset kommentit tai dokumentointikommentit käyttävät kolmoishipsuja (""" tai ''').

 

"""
Tämä on monirivinen kommentti
tai dokumentointikommentti.
"""
print("Hei maailma!")

Muuttujat

Muuttujat ovat ohjelmoinnin peruselementtejä, ja niillä on monia tärkeitä tehtäviä ja etuja:

  1. Tiedon tallentaminen: Muuttujat mahdollistavat tietojen tallentamisen väliaikaisesti, jotta niitä voidaan käyttää ja käsitellä ohjelman suorituksen aikana.

  2. Lue ja kirjoita: Muuttujien avulla ohjelmat voivat tallentaa, lukea ja päivittää tietoa dynaamisesti.

  3. Koodin selkeys: Muuttujat tekevät koodista luettavampaa. Esimerkiksi, palkka * 0.2 ei välttämättä kerro paljon, mutta jos meillä on muuttuja veroaste, joka on määritelty arvoksi 0.2, lauseke palkka * veroaste on paljon selkeämpi.

  4. Uudelleenkäytettävyys: Muuttujat tekevät koodista modulaarista ja helposti uudelleenkäytettävää. Jos tarvitset samaa arvoa monessa paikassa ohjelmassasi, muuttujien avulla voit määrittää arvon vain kerran ja käyttää sitä monta kertaa.

  5. Joustavuus: Oletetaan, että käytät samaa arvoa monessa paikassa koodissasi. Jos haluat myöhemmin muuttaa tätä arvoa, sinun täytyisi muuttaa sitä jokaisessa paikassa erikseen. Mutta jos käytät muuttujaa, sinun tarvitsee muuttaa arvoa vain kerran muuttujan määritelmässä.

  6. Abstraktio: Muuttujat mahdollistavat abstraktion, mikä tarkoittaa, että voimme käsitellä monimutkaisia tietoja yksinkertaisemmin. Esimerkiksi, listamuuttuja voi sisältää tuhansia numeroita, mutta voimme käsitellä sitä yksinkertaisesti yhdellä nimellä.

  7. Algoritmien toteutus: Monet algoritmit vaativat tilapäisen tallennustilan toimiakseen. Muuttujat tarjoavat tätä tilaa.

  8. Tilanhallinta: Erityisesti iteratiivisissa ja toistuvissa prosesseissa muuttujat voivat toimia laskureina, pohjina, tilastatusmuuttujina jne.

  9. Interaktiivisuus: Muuttujat mahdollistavat ohjelmien vuorovaikutuksen käyttäjien kanssa. Käyttäjä voi syöttää tietoja, jotka tallennetaan muuttujiin ja joita ohjelma voi käyttää myöhemmin.

Lyhyesti sanottuna, ilman muuttujia monimutkainen datan käsittely ja logiikan toteuttaminen olisi käytännössä mahdotonta. Muuttujat tekevät koodista joustavaa, modulaarista ja ymmärrettävää.

 

Muuttujan määrittely

Muuttujan määrittelyssä annetaan arvo muuttujan nimelle. Pythonissa ei tarvitse erikseen ilmoittaa muuttujan tyyppiä (kuten joissakin muissa kielissä), koska Python on dynaamisesti tyypitetty kieli.

nimi = "Anna"
ikä = 30
paino = 68.5
on_naimisissa = False

Tässä nimi on merkkijonotyyppiä (str), ikä on kokonaislukutyyppiä (int), paino on liukulukutyyppiä (float) ja on_naimisissa on totuusarvotyyppiä (bool).

Muuttujan nimeäminen

Pythonissa on tiettyjä sääntöjä ja käytäntöjä muuttujien nimeämiseen:

  1. Muuttujan nimi alkaa kirjaimella (a-z, A-Z) tai alaviivalla (_), mutta ei numerolla.
  2. Muuttujan nimi voi sisältää kirjaimia, numeroita ja alaviivoja.
  3. Nimet ovat kirjainkoosta riippuvaisia: muuttuja, Muuttuja, ja MUUTTUJA ovat eri muuttujia.
  4. Yleinen käytäntö on käyttää pieniä kirjaimia ja erottaa sanat alaviivoilla, esim. minun_muuttujani.

Dynaaminen tyypitys

Pythonissa muuttujan tyyppi määräytyy automaattisesti sen arvon perusteella. Tämä tarkoittaa myös, että muuttujan tyyppi voi muuttua ohjelman suorituksen aikana:

x = 5       # x on nyt int-tyyppiä
x = "Anna"  # x on nyt str-tyyppiä

Muuttujien arvojen vaihto

Pythonissa voit vaihtaa kahden muuttujan arvot ilman väliaikaista muuttujaa:

a = 5
b = 10
a, b = b, a  # nyt a on 10 ja b on 5

Aliohjelmat

Aliohjelmat ovat koodin osia, jotka voivat suorittaa määritellyn toiminnon. Pythonissa funktiot ovat yleisimpiä aliohjelmia.

  • Funktio määritellään def-avainsanalla.

Esimerkki:

def tervehdi(nimi):
    """Tämä funktio tervehtii antamallasi nimellä."""
    print(f"Hei, {nimi}!")
  • Funktiokutsussa voit kutsua määriteltyä funktiota.
tervehdi("Anna")

 

Globaalit ja lokaalit muuttujat Pythonissa

Pythonissa muuttujilla voi olla joko globaali tai lokaali toiminta-alue riippuen siitä, missä ne on määritelty.

Lokaalit Muuttujat:

Esimerkki:

def esimerkki_funktio(): 
    lokaali_muuttuja = "Olen lokaali muuttuja" 
    print(lokaali_muuttuja) 

esimerkki_funktio() # Tulostaa: Olen lokaali muuttuja 

 

  • Lokaali muuttuja on muuttuja, joka on määritelty funktion tai muun lohkon sisällä sisällä.
  • Sitä voidaan käyttää vain sen määrittelemässä lohkossa
  • Se on näkymätön muille lohkoille, eikä se vaikuta muihin samannimisiin muuttujiin ohjelman muissa osissa.

Globaalit Muuttujat:

Esimerkki:

globaali_muuttuja = "Olen globaali muuttuja" 

def esimerkki_funktio(): 
    global globaali_muuttuja 
    globaali_muuttuja = "Olen muokattu globaali muuttuja" 
    print(globaali_muuttuja) 

esimerkki_funktio() # Tulostaa: Olen muokattu globaali muuttuja 

print(globaali_muuttuja) # Tulostaa myös: Olen muokattu globaali muuttuja 
  • Globaali muuttuja on muuttuja, joka on määritelty funktion ulkopuolella.
  • Se on näkyvissä ja saatavilla koko ohjelman laajuudessa.
  • Voit käyttää global avainsanaa sisällä funktiota viittaamaan globaaliin muuttujaan sen sijaan, että luot uuden lokaalin muuttujan.

Huomioita:

  • Käytä lokaaleja muuttujia, kun tarvitset väliaikaista tallennustilaa tai haluat varmistaa, ettei muuttuja vaikuta muihin ohjelman osiin.
  • Globaalien muuttujien liiallinen käyttö voi tehdä koodista sekavaa ja vaikeasti hallittavaa, koska niitä voi muokata mistä tahansa ohjelman osasta. Käytä niitä harkiten ja vältä, kun mahdollista.

global-avainsana Pythonissa

Kun työskentelet funktion sisällä ja haluat viitata tai muokata globaalia muuttujaa (eikä luoda uutta lokaalia muuttujaa), voit käyttää global-avainsanaa.

Käyttö: Jos haluat muokata globaalia muuttujaa funktion sisällä, sinun tulee ensin ilmoittaa se global-avainsanalla. Muuten Python luo lokaalin muuttujan, jolla on sama nimi.

x = 10  # Globaali muuttuja

def muuta_arvoa():
    global x
    x = 20

muuta_arvoa()
print(x)  # Tulostaa: 20

Jos global-avainsanaa ei olisi käytetty edellä, muuta_arvoa -funktio olisi luonut uuden lokaalin muuttujan nimeltä x sen sijaan, että se olisi muuttanut globaalin x arvoa.

Varovaisuus: Vaikka global-avainsana voi olla hyödyllinen tietyissä tilanteissa, sen liiallista käyttöä tulisi välttää. Kun ohjelma kasvaa, liiallinen globaalien muuttujien käyttö ja muokkaus voi tehdä koodista sekavaa ja aiheuttaa odottamattomia sivuvaikutuksia.

Suositus: Usein on parempi välittää muuttujat funktioille parametreina ja palauttaa uudet arvot funktioista, sen sijaan että käyttäisit globaaleja muuttujia. Tämä tekee koodista ennakoitavampaa ja helpommin ylläpidettävää.

pass-avainsana

pass on erityinen avainsana Pythonissa, jota käytetään syntaktisena paikkatäytteenä. Se tarkoittaa kirjaimellisesti "tee ei mitään". Se on hyödyllinen, kun sinulla on lohko, joka vaatii syntaktisesti jonkin sisällön, mutta et halua tehdä mitään kyseisessä lohkossa (ainakaan vielä).

Tässä on muutamia esimerkkitilanteita, joissa pass voi olla hyödyllinen:

  • Prototyyppien luonnissa: Kun aloitat uuden funktion, mutta et ole vielä valmis kirjoittamaan sen toteutusta: 
def uusi_funktio():
    pass
  • Luokissa: Kun määrität uuden luokan, mutta et ole vielä lisännyt siihen metodeita:

 

class UusiLuokka:
    pass

 

  • Ehtolausekkeissa: Kun haluat jättää jonkin ehtolausekkeen osan tyhjäksi: 

 

if ehto:
    pass
else:
    print("Ehto ei täyttynyt")

 Tässä pass sallii if-lohkon olemassaolon ilman, että se tekee mitään.

Yhteenvetona: pass on hyödyllinen, kun tarvitset "tyhjän" lohkon koodissasi, joka ei tee mitään. Se on erityisen hyödyllinen kehityksen varhaisissa vaiheissa, kun suunnittelet koodisi rakennetta.

Luokiin ja ehtolauseisiin palataan myöhemmin. Älkää pelästykö vaikka ette ymmärtäneetkään.

Miltä Python Ohjelma Näyttää?

Python-ohjelman perusrakenne näyttää esimerkiksi tältä:

# Tämä on yläosan kommentti, joka selittää ohjelman tarkoitusta

def funktio1():
    """Funktion 1 kuvaus"""
    pass

def funktio2(parametri1, parametri2):
    """Funktion 2 kuvaus"""
    pass

if __name__ == "__main__":
    # Ohjelman suoritus alkaa tästä
    funktio1()
    funktio2("arvo1", "arvo2")