Net als in de wiskunde hebben programmeertalen zoals Python operatoren. Je kunt ze zien als extreem eenvoudige functies die aan de basis liggen van de informatica. Dit zijn de eenvoudigste bewerkingen waarnaar een computerprogramma kan worden herleid. Ze zijn essentiële kennis voor elke beginnende Data Scientist of Software Engineer.
Wil je meer leren over de basis van de programmeertaal Python? Bekijk dan zeker onze gratis cursus Intro to Python for Data Science.
Rekenkundige operatoren
Waarschijnlijk ken je deze al, omdat ze uit de basiswiskunde komen.
De rekenkundige operatoren zijn optellen (+), aftrekken (-), vermenigvuldigen (*), delen (/), machtsverheffen (**), gehele deling (//) en modulus (%). De eerste vier zijn vrij simpel; dat zijn optellen, aftrekken, vermenigvuldigen en delen, en die ken je waarschijnlijk al.
# Additionprint(5+2)# Subtractionprint(5-2)# Multiplicationprint(5*2)# Divisionprint(5/2)Mogelijk gemaakt door
De andere drie zijn iets ingewikkelder. De machtsoperator betekent ‘verheffen tot de macht’. Zo betekent 2 ** 3 dat 2 zichzelf 3 keer vermenigvuldigt, dus 2 ** 3 is hetzelfde als 2 * 2 * 2, wat gelijk is aan 8.
Gehele deling is hetzelfde als normale deling, behalve dat het resultaat altijd naar beneden wordt afgerond. In het onderstaande voorbeeld wordt 5 gedeeld door 2, wat 2,5 oplevert. Maar omdat het om gehele deling gaat, wordt 2,5 afgerond naar 2.
Tot slot is de modulus de rest na deling. In het geval van 5%2 past het getal 2 maar twee keer in 5, wat betekent dat de rest 1 is.
# Exponentprint(5**2)# This is the same as 5 * 5# Floor Divisionprint(5//2)# Modulusprint(5%2)Mogelijk gemaakt door
In Python kun je de opteloperator ook gebruiken om strings te concateneren. Dat betekent dat ze aan elkaar worden geplakt tot één string, bijvoorbeeld:
firstName ="Théo"
introduction ="Hi, my name is "+ firstName +"."print(introduction)Mogelijk gemaakt door
Als je al wat programmeerervaring hebt, heb je zeker eerder toekenningsoperatoren gebruikt. Ze wijzen een bepaalde waarde toe aan een variabele. De meest gebruikte is =. Om hem te gebruiken, typ je simpelweg de naam van de variabele waaraan je een nieuwe waarde wilt toekennen, de =, en de waarde die je wilt toekennen. Als je bijvoorbeeld de waarde 100 wilt toekennen aan de variabele balance, kun je het volgende doen:
De andere toekenningsoperatoren werken exact hetzelfde. Dit zijn:
*=
/=
**=
//=
%=
Vergelijkingsoperatoren
Je kunt vergelijkingsoperatoren gebruiken om, je raadt het al, de waarden van variabelen te vergelijken. Ze geven altijd een booleaanse waarde terug, die ofwel True of False is. Er zijn er zes:
a =3
b =5print(a == b)# Equalprint(a != b)# Not equalprint(a > b)# Greater thanprint(a < b)# Less thanprint(a >= b)# Greater than or equal toprint(a <= b)# Less than or equal toMogelijk gemaakt door
== en != kunnen ook worden gebruikt om strings te vergelijken in plaats van getallen. De andere operatoren zijn niet compatibel met strings, omdat een string niet echt groter kan zijn dan een andere string.
Let op dat deze ook werken met meer dan twee operanden, bijvoorbeeld:
print(TrueandTrueandTrueandTrue)print(TrueandTrueandTrueandFalse)print(FalseorFalseorFalseorFalse)print(FalseorFalseorFalseorTrue)Mogelijk gemaakt door
Weet je nog dat je eerder zag hoe + kan worden gebruikt om getallen op te tellen, maar ook om strings te concatenen of te combineren. + werkt dus anders, afhankelijk van het type object waarop je het gebruikt. Maar dat is niet altijd het geval. Soms ondersteunt de operator waarmee je werkt simpelweg het type object niet waarop je hem wilt toepassen.
Hier is een voorbeeld. Stel, je hebt twee Dog-objecten, ozzy en filou. Deze behoren tot de onderstaande Dog-klasse. Je kunt de klasse zien als een blauwdruk voor hoe de objecten eruit moeten zien en hoe ze zich moeten gedragen. In dit geval hebben de Dog-objecten een naam, leeftijd en hoogte. Nadat de klasse is gedefinieerd, kun je objecten instantiëren. Een van hen is Ozzy, met een leeftijd van 3 en een hoogte van 30 centimeter. De andere is Filou, hij is 5 jaar oud en 65 centimeter lang.
Dit voorbeeld gebruikt het concept van objectgeoriënteerd programmeren. Wil je daar meer over leren, lees dan zeker onze tutorial over Object-Oriented Programming in Python
Stel dat je beide honden wilt vergelijken met ‘groter dan’: >. Dat werkt niet. Je krijgt een foutmelding: '>' not supported between instances of 'Dog' and 'Dog'. Dit betekent dat > niet weet hoe het objecten van de Dog-klasse moet vergelijken.
classDog:def__init__(self, name, age, height):
self.name = name
self.age = age
self.height = height
ozzy = Dog("Ozzy",3,30)
filou = Dog("Filou",5,65)print(filou > ozzy)Mogelijk gemaakt door
---------------------------------------------------------------------------
TypeError Traceback(most recent call last)<ipython-input-96-428069ab24cc>in<module>()9 filou =Dog("Filou",5,65)10--->11print(filou > ozzy)TypeError:'>' not supported between instances of'Dog' and 'Dog'Mogelijk gemaakt door
Gelukkig kun je met operator overloading het gedrag van de operator definiëren voor wanneer deze wordt aangeroepen op Dog-objecten. In dit geval moet een methode met de naam __gt__, wat ‘greater than’ betekent, worden gedefinieerd met twee argumenten. Aangezien we onze honden op hun hoogte willen vergelijken, retourneert de methode self.height > other.height.
classDog:def__init__(self, name, age, height):
self.name = name
self.age = age
self.height = height
def__gt__(self,other):return self.height > other.height
ozzy = Dog("Ozzy",3,30)
filou = Dog("Filou",5,65)print(filou > ozzy)print(ozzy > filou)Mogelijk gemaakt door
Hoe weet je welke eerst wordt uitgevoerd? Hoe lees je een regel code met veel van deze symbolen? Wordt het van links naar rechts uitgevoerd of is er een specifieke volgorde?
Hier komt prioriteit om de hoek kijken. Python-operatoren worden in een heel specifieke volgorde uitgevoerd, en sommige hebben voorrang op andere.
In de volgende tabel zie je de prioriteit van operatoren, van boven naar beneden. Deze regels zijn hetzelfde als in de wiskunde, waar bepaalde berekeningen in een formule vóór andere moeten worden uitgevoerd.
Prioriteit
Operator
Beschrijving
1
**
macht
2
*, /, %, //
vermenigvuldigen, delen, modulo, gehele deling
3
+, -
plus, min
4
>, <, >=, <=
vergelijking
5
==, !=
gelijkheid
6
= %= /= //= -= += *= **=
toekenning
7
and, or, not
logisch
Associativiteit
Je hebt gezien dat prioriteit ertoe doet! Maar hoe zit het met de operatoren die op hetzelfde prioriteitsniveau staan, zoals vermenigvuldigen en delen? Worden die tegelijk uitgevoerd? Nee. *, \, % en \\ worden van links naar rechts uitgevoerd, terwijl ** van rechts naar links wordt uitgevoerd. Dit heet associativiteit.
Kijk eens naar het volgende voorbeeld. In dit geval worden de operatoren van links naar rechts uitgevoerd en is de output 3.
Door echter haakjes toe te voegen, kun je de volgorde waarin de operatoren worden uitgevoerd veranderen. Dat is associativiteit, die op dezelfde manier werkt als in de wiskunde. Wat tussen haakjes staat, wordt eerst berekend. In dit geval wordt eerst de gehele deling uitgevoerd, gevolgd door de vermenigvuldiging.
Je weet nu wat operatoren zijn, hoe je ze gebruikt en hoe ze werken. Je hebt ook geleerd over overloading, prioriteit en associativiteit. Je bent goed op weg om een Python-meester te worden! Wil je nog meer leren? Bekijk dan zeker onze cursus Intermediate Python for Data Science.
Duik in datawetenschap met Python en leer hoe je je data goed kunt analyseren en visualiseren. Je hoeft niet te kunnen programmeren of iets dergelijks.
Net als in de wiskunde hebben programmeertalen zoals Python operatoren. Je kunt ze zien als extreem eenvoudige functies die aan de basis liggen van de informatica. Dit zijn de eenvoudigste bewerkingen waarnaar een computerprogramma kan worden herleid. Ze zijn essentiële kennis voor elke beginnende Data Scientist of Software Engineer.
In deze tutorial leer je over
Wil je meer leren over de basis van de programmeertaal Python? Bekijk dan zeker onze gratis cursus Intro to Python for Data Science.
Rekenkundige operatoren
Waarschijnlijk ken je deze al, omdat ze uit de basiswiskunde komen.
De rekenkundige operatoren zijn optellen (
+), aftrekken (-), vermenigvuldigen (*), delen (/), machtsverheffen (**), gehele deling (//) en modulus (%). De eerste vier zijn vrij simpel; dat zijn optellen, aftrekken, vermenigvuldigen en delen, en die ken je waarschijnlijk al.De andere drie zijn iets ingewikkelder. De machtsoperator betekent ‘verheffen tot de macht’. Zo betekent
2 ** 3dat2zichzelf3keer vermenigvuldigt, dus2 ** 3is hetzelfde als2 * 2 * 2, wat gelijk is aan 8.Gehele deling is hetzelfde als normale deling, behalve dat het resultaat altijd naar beneden wordt afgerond. In het onderstaande voorbeeld wordt 5 gedeeld door 2, wat 2,5 oplevert. Maar omdat het om gehele deling gaat, wordt 2,5 afgerond naar 2.
Tot slot is de modulus de rest na deling. In het geval van
5%2past het getal 2 maar twee keer in 5, wat betekent dat de rest 1 is.In Python kun je de opteloperator ook gebruiken om strings te concateneren. Dat betekent dat ze aan elkaar worden geplakt tot één string, bijvoorbeeld:
Toekenningsoperatoren
Als je al wat programmeerervaring hebt, heb je zeker eerder toekenningsoperatoren gebruikt. Ze wijzen een bepaalde waarde toe aan een variabele. De meest gebruikte is
=. Om hem te gebruiken, typ je simpelweg de naam van de variabele waaraan je een nieuwe waarde wilt toekennen, de=, en de waarde die je wilt toekennen. Als je bijvoorbeeld de waarde 100 wilt toekennen aan de variabelebalance, kun je het volgende doen:Als je de waarde van
balancemet 10 wilt verhogen, kun jebalance += 10gebruiken. Dit is gelijk aanbalance = balance + 10, maar het is veel korter.Hetzelfde geldt voor
-=,balance -= 10is hetzelfde alsbalance = balance - 10:De andere toekenningsoperatoren werken exact hetzelfde. Dit zijn:
*=/=**=//=%=Vergelijkingsoperatoren
Je kunt vergelijkingsoperatoren gebruiken om, je raadt het al, de waarden van variabelen te vergelijken. Ze geven altijd een booleaanse waarde terug, die ofwel
TrueofFalseis. Er zijn er zes:==!=><>=<=Hier zijn enkele voorbeeldvergelijkingen:
==en!=kunnen ook worden gebruikt om strings te vergelijken in plaats van getallen. De andere operatoren zijn niet compatibel met strings, omdat een string niet echt groter kan zijn dan een andere string.Logische operatoren
Misschien ken je deze al! In de logica heten ze logische connectieven. Ze worden ook veel gebruikt in de menselijke taal. Het zijn:
and,orennot.andgeeft alleen True terug als beide operanden (de twee booleans die je vergelijkt) True zijn. Bijvoorbeeld:Om het gedrag van deze logische operator te begrijpen, kun je gebruikmaken van een waarheidstabel:
oris True zodra een (één of meer) operand True is.Let op dat deze ook werken met meer dan twee operanden, bijvoorbeeld:
notgeeft het omgekeerde terug van zijn operand, dusTruealsFalsewordt gegeven en omgekeerd.Operator overloading
Weet je nog dat je eerder zag hoe
+kan worden gebruikt om getallen op te tellen, maar ook om strings te concatenen of te combineren.+werkt dus anders, afhankelijk van het type object waarop je het gebruikt. Maar dat is niet altijd het geval. Soms ondersteunt de operator waarmee je werkt simpelweg het type object niet waarop je hem wilt toepassen.Hier is een voorbeeld. Stel, je hebt twee
Dog-objecten,ozzyenfilou. Deze behoren tot de onderstaandeDog-klasse. Je kunt de klasse zien als een blauwdruk voor hoe de objecten eruit moeten zien en hoe ze zich moeten gedragen. In dit geval hebben deDog-objecten een naam, leeftijd en hoogte. Nadat de klasse is gedefinieerd, kun je objecten instantiëren. Een van hen is Ozzy, met een leeftijd van 3 en een hoogte van 30 centimeter. De andere is Filou, hij is 5 jaar oud en 65 centimeter lang.Dit voorbeeld gebruikt het concept van objectgeoriënteerd programmeren. Wil je daar meer over leren, lees dan zeker onze tutorial over Object-Oriented Programming in Python
Stel dat je beide honden wilt vergelijken met ‘groter dan’:
>. Dat werkt niet. Je krijgt een foutmelding:'>' not supported between instances of 'Dog' and 'Dog'. Dit betekent dat>niet weet hoe het objecten van deDog-klasse moet vergelijken.Gelukkig kun je met operator overloading het gedrag van de operator definiëren voor wanneer deze wordt aangeroepen op
Dog-objecten. In dit geval moet een methode met de naam__gt__, wat ‘greater than’ betekent, worden gedefinieerd met twee argumenten. Aangezien we onze honden op hun hoogte willen vergelijken, retourneert de methodeself.height > other.height.Prioriteit
Als je veel operatoren combineert, kan het verwarrend worden. Kijk eens naar het onderstaande voorbeeld:
Hoe weet je welke eerst wordt uitgevoerd? Hoe lees je een regel code met veel van deze symbolen? Wordt het van links naar rechts uitgevoerd of is er een specifieke volgorde?
Hier komt prioriteit om de hoek kijken. Python-operatoren worden in een heel specifieke volgorde uitgevoerd, en sommige hebben voorrang op andere.
In de volgende tabel zie je de prioriteit van operatoren, van boven naar beneden. Deze regels zijn hetzelfde als in de wiskunde, waar bepaalde berekeningen in een formule vóór andere moeten worden uitgevoerd.
Associativiteit
Je hebt gezien dat prioriteit ertoe doet! Maar hoe zit het met de operatoren die op hetzelfde prioriteitsniveau staan, zoals vermenigvuldigen en delen? Worden die tegelijk uitgevoerd? Nee.
*,\,%en\\worden van links naar rechts uitgevoerd, terwijl**van rechts naar links wordt uitgevoerd. Dit heet associativiteit.Kijk eens naar het volgende voorbeeld. In dit geval worden de operatoren van links naar rechts uitgevoerd en is de output 3.
Door echter haakjes toe te voegen, kun je de volgorde waarin de operatoren worden uitgevoerd veranderen. Dat is associativiteit, die op dezelfde manier werkt als in de wiskunde. Wat tussen haakjes staat, wordt eerst berekend. In dit geval wordt eerst de gehele deling uitgevoerd, gevolgd door de vermenigvuldiging.
Conclusie
Je weet nu wat operatoren zijn, hoe je ze gebruikt en hoe ze werken. Je hebt ook geleerd over overloading, prioriteit en associativiteit. Je bent goed op weg om een Python-meester te worden! Wil je nog meer leren? Bekijk dan zeker onze cursus Intermediate Python for Data Science.