...
Funktioiden
...
yhteydessä
...
tulee
...
huomioida
...
muuttujien
...
näkyvyys.
...
Tämä
...
viittaa
...
siihen,
...
että
...
kaikki
...
muuttujat
...
eivät
...
ole
...
käytettävissä
...
joka
...
lohkossa.
...
Tiettyjä
...
tunnisteita
...
sisältäviä
...
lohkoja
...
sanotaan
...
myös
...
nimiavaruuksiksi.
...
Funktion
...
sisällä
...
määritellyt
...
muuttujat
...
eivät
...
ole
...
käytettävissä
...
sen
...
ulkopuolella.
...
Pythonissa on koodissa ns.
...
päätaso,
...
eli
...
alin
...
koodiosio,
...
jossa
...
ei
...
ole
...
yhtään
...
sisennystä.
...
Tässä
...
määritellyt
...
muuttujat
...
ovat
...
globaaleja
...
muuttujia.
...
Funktioiden
...
sisällä
...
globaaleja
...
muuttujia
...
voi
...
käyttää
...
avainsanan
...
global
...
avulla;
...
käytettävät
...
muuttujat
...
luetellaan
...
avainsanan
...
jälkeen.
Code Block |
---|
} def Function(): global s print(s.upper()) s = "globaali merkkijono" Function() input("Paina Enter näppäintä lopettaaksesi...") {code} |
Globaaleihin
...
muuttujien
...
käyttöön
...
voi
...
tosin
...
liittyä
...
muutamia
...
hankaluuksia.
...
Ohjelman
...
toimintaa
...
voi
...
olla
...
vaikea
...
ymmärtää,
...
jos
...
useampi
...
funktio
...
käyttää
...
samoja
...
globaaleja
...
muuttujia.
...
Pienissä
...
ohjelmissa
...
tästä
...
ei
...
ole
...
paljoa
...
vaivaa,
...
mutta
...
isommissa
...
ohjelmissa
...
globaalien
...
muuttujien
...
käyttö
...
monimutkaistuu
...
huomattavasti.
...
Yleensä
...
funktioiden
...
paramtetreilla
...
ja
...
paluuarvoilla
...
pystyy
...
tekemään
...
kaiken
...
ilman
...
globaaleja
...
muuttujia.
Code Block |
---|
} def Function(s): return s.upper() s = "globaali merkkijono" print(Function(s)) input("Paina Enter näppäintä lopettaaksesi...") {code} |
Joskus
...
voi
...
myös
...
olla
...
hyödyllistä
...
tehdä
...
ns.
...
pääfunktio
...
ohjelmaan
...
-
...
funktio,
...
josta
...
ohjelman
...
suoritus
...
aloitetaan
...
ja
...
jossa
...
kutsutaan
...
kaikkia
...
tarvittavia
...
alifunktioita.
...
Tästä
...
on
...
se
...
hyöty,
...
että
...
koodin
...
ollessa
...
funktiossa,
...
muuttujista
...
ei
...
tule
...
globaaleja
...
eikä
...
niitä
...
täten
...
voida
...
muutella
...
alifunktioista
...
käsin.
...
Pythonissa
...
pääfunktio
...
ei
...
ole
...
pakollinen
...
toisin
...
kuin
...
joissain
...
muissa
...
kielissä.
Pääfunktio tekee moduulin koodista myös helpommin uudelleenkäytettävää; toinen ohjelma voi ladata modulin ja ajaa sen koodin yksinkertaisesti kutsumalla pääfunktiota.
Pääfunktion suorituksessa voi käyttää apuna modulin _name_ muuttujaa. Testaamalla if rakenteessa onko muuttujan _name_ arvo "_main_" ja asettamalla pääfunktion kutsu tähän if rakenteeseen pääfunktio ajetaan vain, jos moduuli ajetaan omana ohjelmana. Näin adattaessa pääfunktio jää kutsumatta modulin ladannut ohjelma voi käyttää pääfunktiota tarpeen mukaan.
Code Block |
---|
Pääfunktio tekee moduulin koodista myös helpommin uudelleenkäytettävää; toinen ohjelma voi ladata modulin ja ajaa sen koodin yksinkertaisesti kutsumalla pääfunktiota. Pääfunktion suorituksessa voi käyttää apuna modulin \__name_\_ muuttujaa. Testaamalla if rakenteessa onko muuttujan \__name_\_ arvo "__main__" ja asettamalla pääfunktion kutsu tähän if rakenteeseen pääfunktio ajetaan vain, jos moduuli ajetaan omana ohjelmana. Näin adattaessa pääfunktio jää kutsumatta modulin ladannut ohjelma voi käyttää pääfunktiota tarpeen mukaan. {code} def main(): s = "ei-globaali merkkijono" print(s.upper()) if __name__ == "__main__": main() input("Paina Enter näppäintä lopettaaksesi...") {code} |