Bij het programmeren zijn datatypes (gegevenstypes) een belangrijk concept. Ze helpen programmeurs gestructureerd en efficiënt hun doel te bereiken. Door gebruik te maken van datatypes in een programmeertaal worden er ook fouten vermeden.
Variabelen kunnen verschillende typen gegevens opslaan en verschillende typen kunnen verschillende dingen doen. Denk maar aan het feit dat + bij integers en strings een verschillend gedrag vertoond.
Python heeft standaard de volgende gegevenstypen ingebouwd, in deze categorieën:
Teksttype: str
Numerieke typen: int, float, complex
Reekstypen: list, tuple, range
Mappingtype: dict
Settypen: set, frozenset
Booleaans type: bool
Binaire typen: bytes, bytearray, memoryview
Geen Type: NoneType
In het begin hebben we het enkel over integer, float en string. Later zullen we in andere hoofdstukken dieper ingaan op boolean en list.
Python heeft een functie type() voorzien. Deze functie helpt je bepalen welk type een waarde of variabele heeft.
Voorbeelden in de CLI:
> type(15)
=> <class 'int'>
> type("15")
=> <class 'str'>
> type(1.5)
=> <class 'float'>
> type(10/2)
=> <class 'float'>
> type(input("Wat is uw eerste getal? "))
Wat is uw eerste getal? 7
=> <class 'str'>
Python analyseert op basis van de data welk datatype het aan een variabele of waarde moet toekennen. Python hanteert hiervoor enkele stappen:
De invoer staat tussen aanhalingstekens --> string
Bestaat de waarde alleen maar uit aanééngeplakte cijfers --> integer
Wanneer alle aanééngeplakte cijfers één punt bevat --> float
Volgende regels worden ook toegepast bij bewerkingen:
som, verschil, product van 2 integers --> integers
deling van 2 integers --> float
Python laat toe om waarde en variabelen van datatype te veranderen indien mogelijk. Het veranderen van een datatype wordt in het vakjargon casten genoemd. We geven hierbij enkele voorbeelden hoe je datatypes kan veranderen met voorgedefinieerde functies.
Voorbeelden in CLI:
> getal = "8"
> getal
=> '8'
> int(getal)
=> 8
> getal
=> '8'
Merk op dat de variabele getal nog steeds de string "8" bevat. Om getal te veranderen in een string moeten we de integer 8 nog toekennen aan de variabele getal.
> getal = int(getal)
Bij deze laatste regel is het getal gecast van string naar integer en is de variabele getal gewijzigd van datatype string naar datatype int.
Let wel op dat de string wel degelijk een integer bevat, anders zal de volgende foutmelding op het scherm komen.
> int("Matthias")
Traceback (most recent call last):
File python, line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Matthias'
Voorbeelden in CLI:
> getal_als_getal = 9
> type(getal_als_getal)
=> <class 'int'>
> str(getal_als_getal)
=> '9'
> getal_als_string = str(getal_als_getal)
> type(getal_als_string)
=> <class 'str'>
Dat het nuttig is string naar integer om te zetten is duidelijk. Maar ook de omgekeerde richting heeft zijn voordelen.
Soms willen we een zin printen met een getal in. Bijvoorbeeld: "Het saldo op je bankrekening bedraag 456 EUR!". Het saldo op de bankrekening wordt bewaard in een variabele. Daar deze variabele in dit voorbeeld een integer is kan deze niet zomaar samengeplakt worden met een string. Voor samen te plakken moeten alle elementen van het type string zijn.
Voorbeeld editor:
rekeningsaldo = 456
print("Het saldo op je bankrekening " + rekeningsaldo + " EUR!")
Wanneer we deze code uitvoeren krijgen we een foutmelding.
Resultaat na de run in CLI:
Traceback (most recent call last):
File "python, line 2, im <module>
TypeError: must be str, not int
We moeten dus eerst rekeningsaldo omzetten/casten naar string om deze regel geldig te maken. De correcte schrijfwijze is als volgt:
rekeningsaldo = 456
print("Het saldo op je bankrekening " + str(rekeningsaldo) + " EUR!")
Rekeningsaldo blijft van het type integer, enkel tijdens de expressie print, wordt deze integer omgezet naar string.
Deze functie kan je wel de tweelingbroer van int() noemen.
Op exact dezelfde manier werkt deze functie als int(). Wanneer int() een reeks van cijfers opmerkt in de string maakt hij er een integer van. De functie float() moet de string boven op aanééngeplakte cijfers ook exact 1 punt bevatten. Wanneer deze string aan de voorwaarde voldoet zal de functie float() de string omzetten naar een float.
Voorbeelden in CLI:
> getal = "3.14159"
> getal
=> '3.14159'
> float(getal)
=> 3.14159
> getal
=> '3.14159'
> getal = float(getal)
> getal
=> 3.14159
> type(getal)
=> <class "float">
Merk ook hier op dat getal pas van type wijzigt wanneer je het resultaat van de functie float() opnieuw toekend aan getal.
int()
str()
datatypes - type()
float()