V zadnjem primeru na prejšnji strani bomo pri stavku print(produkt)
dobili napako: tolmač vidi, da je v telesu funkcije nek stavek (namreč produkt = a * x
), ki spremenljivki produkt
nekaj prireja, zato jo obravnava kot lokalno spremenljivko. Ko pride izvajanje do stavka print(produkt)
, pa se prireditev produkt = a * x
še ni izvedla, zato lokalna spremenljivka produkt
še ni inicializirana in tolmač bo javil napako. Na tistem mestu sicer že obstaja globalna spremenljivka produkt
, vendar te funkcija ne vidi, ker ima lokalno spremenljivko z enakim imenom.
Kaj pa, če bi funkcija vendarle želela nekaj prirediti neki globalni spremenljivki (in ne ustvariti lokalne spremenljivke z istim imenom)? V pythonu lahko s stavkom global
določimo, da hočemo uporabljati neko globalno spremenljivko in ne dobiti istoimenske lokalne spremenljivke:
Pogosto pride prav, če lahko funkcija vrne nek rezultat. Klicatelj potem ta rezultat vidi kot vrednost izraza, s katerim je funkcijo poklical, in ga lahko nadalje obdeluje kot katerokoli drugo vrednost. Na primer:
Ko pride izvajanje funkcije do stavka return
, se klic takoj konča (četudi za tem stavkom pridejo v telesu funkcije še drugi stavki) in vrne vrednost izraza, ki smo ga napisali v stavku return
. Ko na primer v zgornjem primeru glavni del programa pokliče Povprecje(a)
, ta funkcija najprej pokliče funkcijo Vsota
, ki sešteje elemente tabele in vrne njihovo vsoto; v našem primeru je to 90. Nato Povprecje
pokliče še standardno pythonovo funkcijo len
, ki vrne število elementov tabele (v našem primeru 3); rezultat izraza Vsota(tabela) / len(tabela)
je torej 30 in to je vrednost, ki jo vrne funkcija Povprecje
. Glavni del programa to vrednost poda kot parameter standardni pythonovi funkciji print
in jo tako izpiše.