Globale og lokale variabler

Python kan genbruge navnet på en variable i en funktion, således variablen indeholder en anden type og værdi end i hovedprogrammet. Hovedprogrammet er den del af Python-koden, som ikke er i en funktion.

Modsat kan variablerne og deres værdier også bruges i hovedprogrammet samt i funktionerne, altså det er muligt at bruge variablen og dens værdier på sammen måde fra både hovedprogrammet og funktioner. Det hedder, at variablerne har et lokalt eller globalt scope.

Det lyder lidt svært, men det er tydeligt at se forskellen i dette lille eksempel.

# eks4-4-1.py

# funktion skriv har en lokal variabel a og en global variabel b
def skriv(a):
    # a er lokal og b er global
    # Se a er baade i hovedprogrammet og funktionen
    a = a + 1
    print('a = ', a)
    print('b = ', b)

# Variabel a og b
a = 4
b = 5
skriv(2)

Dette program skriver følgende på skærmen:

a = 3
b = 5

Hovedprogrammet har en variabel a, som får værdien 5 og b som får værdien 3.

Funktionen skriv tager et argument a, men det er ikke samme variabel, som er brugt. I funktionen skriv er a et argument, mens det betyder også at Python ikke kan bruge hovedprogrammets a inde i funktionen skriv, men kun sit eget a. Funktionen tæller a en op og udskriver det a, som den har fået i sit argument. Derimod har den b fra hovedprogrammet, udskriver den værdi b har fået fra hovedprogrammet.

b er altså en global variable i hele programmet, mens a er lokal i funktionen. Bemærk, at det ikke er muligt at bruge den globale a inde i funktionen.

 

Brug af lokale og globelt scope

En god hovedregel er at kun bruge lokale variabler, og data til funktioner kommer med argumenterne og data ud kommer fra return i funktionen. Lokale variabler gør programmerne lettere at forstå, så logiske fejl lettere er fundet og rettet, men det er også meget lettere at genbruge en funktion i en anden sammenhæng, som ikke var tænkt, da funktionen blev skrevet.

Der kan være som altid være afvigelsr fra denne regel.

Du har lært

  • Variabler har et lokalt scope eller globalt scope. Lokalt er i en funktion mens globalt gælder i hele Python-programmet
  • I funktioner er det en god ikke at bruge globale variabler