2.5. Variabler

En variabel er en pegepind, der peger på et antal adresser i computerens arbejdslager (RAM), hvor data, der kan være flere ting f.eks. tal og tekststrenge, placeres. Variablen skal tildeles et navn, der ikke må indeholde de dansk/norske specialtegn ÆØÅ og æøå. Det skal lige bemærkes, at der i visse underversioner af version 2.3 har været muligheder for at bruge de nævte tegn.

2.5.1. Erklæring af variabler

Når programmørerne skulle foretage beregninger på Dask, Danmarks første computer, måtte de tænke i nuller og et taller. Det er meget ubekvemt for mennesker så tallene blev erstattet med ord - i første omgang ord på 3 bogstaver. Det var en stor lettelse for programmørerne. Nu kan variabel- og andre navne normalt have op til 256 bogstaver eller tal blot bør første tegn i et variabelnavn være et bogstav, der ikke må være et dansk/norsk specialtegn æøå og ÆØÅ. I Python er der for så vidt ikke noget i vejen, for at første tegn kan være et understreg tegn, men det kan være en rigtig dårlig løsning, da fordefinerede navne m.v. herved let vil kunne overskrives. I Python skal variabler ikke erklæres. Erklæringen sker automatisk. MEN BEMÆRK Python gør forskel på store og små bogstaver, d.v.s. at variablerne a og A er to forskellige variabler og vil blive fortolket som sådanne. Det samme gælder naturligvis også alle andre navne (på lister, tuples m.v.)


>>> # Først tildeles x værdien nul, så tildeles y værdien i x og z værdien i y.
>>> x = y = z = 0
>>> x
0
>>> y
0
>>> z
0
BEMÆRK: I Python anvendes == for lig med og = for tildel. Der er således markant forskel på x == y og x = y

2.5.2. Variabler kan overskrives

Globale variabler kan overskrives:


>>> e = 1000 # definering af global variabel
>>> def nix():
...    global e
...    e = 25
...
>>> e
1000
>>> nix()
>>> e
25
Globale navne er flere ting, så pas på:

>>> liste = [1,2,3,4,5]
>>> def funktion(l):
...    global liste
...    liste.append(12345)
...
>>> liste
[1, 2, 3, 4, 5]
>>> funktion(liste)
>>> liste
[1, 2, 3, 4, 5, 12345]
>>>


Indledningsvis oprettes listen [1,2,3,4,5]. Det første kald viser, at såfremt listen kaldes, inden den i funktionen funktion erklærede globale liste overtager 1: den udenfor funktionen definerede liste og 2: tildeler den et element (12345) yderligere. Her markeres det, at en global variabel erklæret i en funktion overstyrer en global variabel erklæret udenfor funktionen.

2.5.3. Variablers adresse

Variablers type kan findes med type:


>>> a = 25
>>> type(a)
<type 'int'>
>>> a = 12.4
>>> type(a)
<type 'float'>
>>> a = "Rønne"
>>> type(a)
<type 'str'>


2.5.4. Variablers adresse

Variablers adresse i RAM kan findes med id


>>> a = 12.4
>>> id(a)
136095956
>>> a = 23
>>> id(a)
135591272
>>> a = "Rønne"
>>> id(a)
1078892096


Af følgende udskrift fremgår det, at samme bogstav giver samme adresse:


>>> s = "Dette er en streng."
>>> for i in range(0,18):
...     print s[i], id(s[i])
...
D 1078892160
e 1076630176
t 1076645984
t 1076645984
e 1076630176
  1078892192
e 1076630176
r 1076518048
  1078892192
e 1076630176
n 1076614816
  1078892192
s 1076613536
t 1076645984
r 1076518048
e 1076630176
n 1076614816
g 1076690208



>>> s = "AABBCCaabbcc"
>>> for i in range(0,len(s)):
...     print s[i], id(s[i])
...
A 1078892448
A 1078892448
B 1078892384
B 1078892384
C 1078892608
C 1078892608
a 1076679360
a 1076679360
b 1076679584
b 1076679584
c 1076690176
c 1076690176


2.5.5. Variabler i Python

At Python er et ret nyt computsprog, det markerer sig bl.a. m.h.t. variablers egenskaber og anvendelsesmåde. I de traditionelle computersprog som C, C++, Pascal, Delphi, Visual Basic, Java og andre skal variable være det man kalder strongly typed dvs. de skal defineres til at indeholde ganske bestemte værdityper f.eks. heltal eller tekststrenge, og kun de således definerede typer må gemmes i de aktuelle variabler. Sådan er det ikke i Python. Her flyttes variablers indhold automatisk til andre adresser i lageret, hvis omdefinering er nødvendig, bl.a. fordi alle former for variabler ikke fylder lige meget i lageret.

Eks. 1:


>>> # Her sker der 2 ting: 1: variablen a erklæres (is declared) og
>>> # 2: tildeles samtidig værdien "Tekststreng" d.v.s. den sættes til
>>> # at pege på de adresser i computerens lager, hvor "Tekststreng"
>>> # opbevares.
>>> a = "Tekststreng"
>>> a
Tekststreng
>>> # Nu tildeles samme variabel uden videre et heltal (integer) som værdi.
>>> a = 25
>>> print a
25


Eks. 2:


>>> a = "Tekststreng " + str(25)
>>> a
'Tekststreng 25'


Python er ikke strongly typed som C, Pascal og mon ikke de fleste andre computersprogs variabler skal være det. At et sprog er strong typed betyder, at en variabel ene og alene kan indeholde den type af værdi, den er oprettet (defineret) til at indeholde. C, Pascal og de andre sprog holder kort sagt styr på de adresser i computerens RAM lager, variablerne er sat til at pege på.