Oplossing: syntaxisfout: positioneel argument volgt trefwoordargument
Een fout die je in Python tegen kunt komen is:
SyntaxError : positional argument follows keyword argument
Deze fout treedt op wanneer u een positioneel argument in een functie gebruikt nadat u een trefwoordargument hebt gebruikt.
Hier is het verschil tussen de twee:
Positionele argumenten zijn argumenten waarvoor geen ‘sleutelwoord’ staat.
- Voorbeeld: mijn_functie(2, 2)
Zoekwoordargumenten zijn argumenten waarvoor een ‘trefwoord’ staat.
- Voorbeeld: mijn_functie(a=2, b=2)
Als je een positioneel argument gebruikt na een trefwoordargument, zal Python een foutmelding genereren.
- Voorbeeld: mijn_functie(a=2, 2)
Het volgende voorbeeld laat zien hoe deze fout in de praktijk kan optreden.
Voorbeeld: Een positioneel argument volgt op een trefwoordargument
Stel dat we in Python de volgende functie hebben die twee waarden vermenigvuldigt en vervolgens door een derde deelt:
def do_stuff (a,b):
return a*b/c
De volgende voorbeelden tonen geldige en ongeldige manieren om deze functie te gebruiken:
Geldige manier #1: alle positionele argumenten
De volgende code laat zien hoe u onze functie kunt gebruiken met alle positionele argumenten:
do_stuff ( 4,10,5 )
8.0
Er worden geen fouten gegenereerd omdat Python precies weet welke waarden hij voor elk functieargument moet gebruiken.
Geldige methode #2: alle zoekwoordargumenten
De volgende code laat zien hoe u onze functie kunt gebruiken met alle trefwoordargumenten:
do_stuff(a= 4 , b= 10 , c= 5 )
8.0
Opnieuw worden er geen fouten gegenereerd omdat Python precies weet welke waarden hij voor elk functieargument moet gebruiken.
Geldige methode #3: positionele argumenten vóór zoekwoordargumenten
De volgende code laat zien hoe u onze functie kunt gebruiken met positionele argumenten die vóór trefwoordargumenten worden gebruikt:
do_stuff( 4 ,b= 10 ,c= 5 )
8.0
Er wordt geen fout gegenereerd omdat Python weet dat de waarde 4 aan het argument an moet worden toegewezen.
Ongeldige manier: positionele argumenten na trefwoordargumenten
De volgende code laat zien hoe we kunnen proberen de functie te gebruiken met positionele argumenten die na de trefwoordargumenten worden gebruikt:
do_stuff(a= 4 , 10 , 5 )
SyntaxError : positional argument follows keyword argument
Er wordt een fout gegenereerd omdat we positionele argumenten hebben gebruikt na trefwoordargumenten.
Concreet weet Python niet of de waarden 10 en 5 aan de argumenten b of c moeten worden toegewezen, waardoor hij de functie niet kan uitvoeren.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen