I den här artikeln kommer vi att diskutera hur man fixar syntaxfelet som är positionsargument följer nyckelordsargument i Python
Ett argument är ett värde som ges till en funktion när du anropar den funktionen. Titta till exempel på programmet nedan –
Pytonorm
# function> def> calculate_square(num):> >return> num>*> num> > > # call the function> result>=> calculate_square(>10>)> print>(result)> |
java initiera array
>
>Produktion
100>
De beräkna_kvadrat() funktion tar in ett argument på ett som är ett heltal eller decimal, beräknar kvadraten på talet och returnerar värdet.
Nyckelord och positionsargument i Python
Det finns två sorters argument, nämligen nyckelord och positionella. Som namnet antyder identifieras nyckelordsargumentet av en funktion baserad på någon nyckel medan positionsargumentet identifieras utifrån dess position i funktionsdefinitionen. Låt oss ta en titt på detta med ett exempel.
Pytonorm
# 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>
Förklaring:
- Under det första funktionsanropet tillhandahöll vi 3 argument med vilket nyckelord som helst. Python tolkas i ordning efter hur de har definierats i funktionen som överväger positionen för dessa nyckelord.
- I det andra funktionsanropet tillhandahöll vi 2 argument, men fortfarande visas utdata eftersom vi angav 2 positionsargument och funktionen har ett standardvärde för det sista argumentet c . Så det tar hänsyn till standardvärdet för det sista argumentet.
- I det tredje funktionsanropet tillhandahålls tre nyckelordsargument. Fördelen med att tillhandahålla detta nyckelordsargument är att du inte behöver komma ihåg positionerna utan bara de nyckelord som krävs för funktionsanropet. Dessa nyckelord kan tillhandahållas i valfri ordning, men funktionen tar dessa som nyckel-värdepar och inte i den ordning som de skickas.
SyntaxError: positionsargument följer nyckelordsargument
I ovanstående 3 fall har vi sett hur python kan tolka argumentvärdena som skickas under ett funktionsanrop. Låt oss nu betrakta exemplet nedan som leder till en Syntaxfel .
Pytonorm
hur många 0 i en miljard
# 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>
Förklaring:
I det här exemplet uppstod felet på grund av hur vi skickade argumenten under funktionsanropet. Felpositionsargumentet följer nyckelordsargumentet innebär att om något nyckelordsargument används i funktionsanropet så ska det alltid följas av nyckelordsargument. Positionsargument kan skrivas i början innan något nyckelordsargument skickas. Här, a=2 och c=3 är nyckelordsargument. Det 3:e argumentet 9 är ett positionsargument. Detta kan inte tolkas av python som vilken nyckel som har vilket värde. Sättet python fungerar i detta avseende är att det först kartlägger positionsargumentet och sedan alla nyckelordsargument om det finns.
Hur man undviker felet – Slutsats
