logo

Sådan rettes: SyntaxError: positional argument følger nøgleordsargument i Python

I denne artikel vil vi diskutere, hvordan man løser syntaksfejlen, der er positionsargument følger søgeordsargument i Python

Et argument er en værdi, der gives til en funktion, når du kalder den funktion. Se for eksempel nedenstående program –



Python






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



java undtagelser
>

>

Produktion

100>

Det beregne_kvadrat() funktion tager et argument ind på en som er et heltal eller decimalinput, beregner kvadratet af tallet og returnerer værdien.

Nøgleord og positionsargumenter i Python

Der er to slags argumenter, nemlig nøgleord og positionelle. Som navnet antyder, identificeres nøgleordsargumentet af en funktion baseret på en eller anden nøgle, hvorimod positionsargumentet identificeres ud fra dets position i funktionsdefinitionen. Lad os se på dette med et eksempel.

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>)>

>

>

Produktion:

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>

Forklaring:

  1. Under det første funktionskald gav vi 3 argumenter med et hvilket som helst nøgleord. Python fortolket i rækkefølge efter, hvordan de er blevet defineret i den funktion, der overvejer placeringen af ​​disse nøgleord.
  2. I det andet funktionskald leverede vi 2 argumenter, men outputtet vises stadig, fordi vi har leveret 2 positionsargument, og funktionen har en standardværdi for det sidste argument c . Så det tager standardværdien i betragtning for det endelige argument.
  3. I det tredje funktionskald er der angivet tre nøgleordsargumenter. Fordelen ved at give dette søgeordsargument er, at du ikke behøver at huske positionerne, men blot de nøgleord, der kræves til funktionskaldet. Disse nøgleord kan angives i en hvilken som helst rækkefølge, men funktionen vil tage disse som nøgle-værdi-par og ikke i den rækkefølge, som de sendes.

SyntaxError: positionsargument følger nøgleordsargument

I ovenstående 3 tilfælde har vi set, hvordan python kan fortolke de argumentværdier, der sendes under et funktionskald. Lad os nu overveje nedenstående eksempel, som fører til en Syntaks fejl .

Python


konvertering af int til dobbelt java



# 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>)>

>

>

Produktion:

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

Forklaring:

I dette eksempel opstod fejlen på grund af den måde, vi har videregivet argumenterne under funktionskaldet. Fejlpositionsargumentet følger nøgleordsargumentet betyder, at hvis et nøgleordsargument bruges i funktionskaldet, så skal det altid efterfølges af nøgleordsargumenter. Positionelle argumenter kan skrives i begyndelsen, før et søgeordsargument sendes. Her, a=2 og c=3 er søgeordsargument. Det 3. argument 9 er et positionsargument. Dette kan ikke fortolkes af pythonen til, hvilken nøgle der har hvilken værdi. Måden python fungerer i denne henseende er, at den først vil kortlægge positionsargumentet og derefter ethvert søgeordsargument, hvis det er til stede.

Sådan undgår du fejlen – Konklusion