logo

Oplossing: SyntaxError: positioneel argument volgt trefwoordargument in Python

In dit artikel zullen we bespreken hoe je de syntaxisfout kunt oplossen die bestaat uit een positioneel argument dat volgt op een trefwoordargument in Python

Een argument is een waarde die aan een functie wordt gegeven wanneer u die functie aanroept. Kijk bijvoorbeeld naar het onderstaande programma:



Python






# function> def> calculate_square(num):> >return> num>*> num> > > # call the function> result>=> calculate_square(>10>)> print>(result)>



latex tekstgrootte
>

>

Uitvoer

100>

De bereken_vierkant() functie neemt een argument op op een Dit is een geheel getal of decimale invoer, berekent het kwadraat van het getal en retourneert de waarde.

Trefwoord- en positionele argumenten in Python

Er zijn twee soorten argumenten, namelijk trefwoord en positioneel. Zoals de naam al doet vermoeden, wordt het trefwoordargument geïdentificeerd door een functie die is gebaseerd op een sleutel, terwijl het positionele argument wordt geïdentificeerd op basis van zijn positie in de functiedefinitie. Laten we dit eens bekijken met een voorbeeld.

Python




# function> def> foo(a, b, c>=>10>):> >print>(>'a ='>, a)> >print>(>'b ='>, b)> >print>(>'c ='>, c)> > > # call the functions> print>(>'Function Call 1'>)> foo(>2>,>3>,>8>)> print>(>'Function Call 2'>)> foo(>2>,>3>)> print>(>'Function Call 3'>)> foo(a>=>2>, c>=>3>, b>=>10>)>

>

>

Uitgang:

Function Call 1 a = 2 b = 3 c = 8 Function Call 2 a = 2 b = 3 c = 10 Function Call 3 a = 2 b = 10 c = 3>

Uitleg:

  1. Tijdens de eerste functieaanroep hebben we 3 argumenten opgegeven met een willekeurig trefwoord. Python interpreteerde het in de volgorde van hoe ze zijn gedefinieerd in de functie die de positie van deze trefwoorden in overweging neemt.
  2. In de tweede functieaanroep hebben we twee argumenten opgegeven, maar de uitvoer wordt nog steeds weergegeven omdat we twee positionele argumenten hebben opgegeven en de functie een standaardwaarde heeft voor het laatste argument C . Er wordt dus rekening gehouden met de standaardwaarde voor het laatste argument.
  3. In de derde functieaanroep worden drie trefwoordargumenten gegeven. Het voordeel van het opgeven van dit trefwoordargument is dat u niet de posities hoeft te onthouden, maar alleen de trefwoorden die nodig zijn voor de functieaanroep. Deze trefwoorden kunnen in elke volgorde worden opgegeven, maar de functie beschouwt deze als sleutel-waardeparen en niet in de volgorde waarin ze worden doorgegeven.

SyntaxError: positioneel argument volgt trefwoordargument

In de bovenstaande 3 gevallen hebben we gezien hoe Python de argumentwaarden kan interpreteren die worden doorgegeven tijdens een functieaanroep. Laten we nu het onderstaande voorbeeld bekijken dat leidt tot a Syntax error .

Python


img css uitlijnen



# function definition> def> foo(a, b, c>=>10>):> >print>(>'a ='>, a)> >print>(>'b ='>, b)> >print>(>'c ='>, c)> > ># call the function> print>(>'Function Call 4'>)> foo(a>=>2>, c>=>3>,>9>)>

>

>

Uitgang:

File '', line 7 foo(a=2, c=3, 9) ^ SyntaxError: positional argument follows keyword argument>

Uitleg:

In dit voorbeeld is de fout opgetreden vanwege de manier waarop we de argumenten hebben doorgegeven tijdens de functieaanroep. Het foutpositionele argument volgt op het trefwoordargument betekent dat als er een trefwoordargument wordt gebruikt in de functieaanroep, dit altijd moet worden gevolgd door trefwoordargumenten. Positionele argumenten kunnen in het begin worden geschreven voordat een trefwoordargument wordt doorgegeven. Hier, een=2 En c=3 zijn trefwoordargumenten. Het 3e argument 9 is een positioneel argument. Dit kan niet door de python worden geïnterpreteerd met betrekking tot welke sleutel welke waarde heeft. De manier waarop Python in dit opzicht werkt, is dat het eerst het positionele argument in kaart brengt en vervolgens elk trefwoordargument, indien aanwezig.

Hoe de fout te voorkomen – Conclusie