Šiame straipsnyje aptarsime, kaip ištaisyti sintaksės klaidą, kuri yra padėties argumentas po raktinio žodžio argumentu Python.
Argumentas yra reikšmė, suteikiama funkcijai, kai ją iškviečiate. Pavyzdžiui, pažiūrėkite į toliau pateiktą programą -
Python
# function> def> calculate_square(num):> >return> num>*> num> > > # call the function> result>=> calculate_square(>10>)> print>(result)> |
iskcon pilna forma
>
>Išvestis
100>
The apskaičiuoti_kvadratas() funkcija priima argumentą ant vieno kuri yra sveikasis skaičius arba dešimtainė įvestis, apskaičiuoja skaičiaus kvadratą ir grąžina reikšmę.
Raktinis žodis ir pozicijos argumentai Python
Yra dviejų tipų argumentai, būtent raktiniai ir poziciniai. Kaip rodo pavadinimas, raktinio žodžio argumentas identifikuojamas pagal funkciją, pagrįstą tam tikru raktu, o pozicijos argumentas identifikuojamas pagal jo vietą funkcijos apibrėžime. Pažvelkime į tai su pavyzdžiu.
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>)> |
>
>
Išvestis:
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>
Paaiškinimas:
- Pirmojo funkcijos iškvietimo metu mes pateikėme 3 argumentus su bet kuriuo raktiniu žodžiu. Python interpretuojama tokia tvarka, kaip jie buvo apibrėžti funkcijoje, kuri atsižvelgia į šių raktinių žodžių padėtį.
- Antrajame funkcijos iškvietime pateikėme 2 argumentus, bet vis tiek išvestis rodoma, nes pateikėme 2 pozicinius argumentus, o funkcija turi numatytąją galutinio argumento reikšmę c . Taigi galutiniam argumentui atsižvelgiama į numatytąją reikšmę.
- Trečiajame funkcijos iškvietime pateikiami trys raktinio žodžio argumentai. Šio raktinio žodžio argumento pranašumas yra tas, kad nereikia atsiminti pozicijų, o tik raktinius žodžius, kurių reikia funkcijos iškvietimui. Šiuos raktinius žodžius galima pateikti bet kokia tvarka, tačiau funkcija juos paims kaip rakto-reikšmių poras, o ne ta tvarka, kuria jie perduodami.
Sintaksės klaida: pozicijos argumentas seka raktinio žodžio argumentą
Pirmiau minėtais 3 atvejais matėme, kaip python gali interpretuoti argumentų reikšmes, kurios perduodamos funkcijos iškvietimo metu. Dabar panagrinėkime toliau pateiktą pavyzdį, kuris veda į a Sintaksės klaida .
Python
driekiasi medžiai
# 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>)> |
>
>
Išvestis:
File '', line 7 foo(a=2, c=3, 9) ^ SyntaxError: positional argument follows keyword argument>
Paaiškinimas:
Šiame pavyzdyje klaida įvyko dėl to, kaip perdavėme argumentus funkcijos iškvietimo metu. Klaidos pozicijos argumentas seka raktinio žodžio argumentą reiškia, kad jei funkcijos iškvietime naudojamas bet koks raktinio žodžio argumentas, po jo visada turėtų būti raktinio žodžio argumentai. Pozicijos argumentai gali būti parašyti pradžioje prieš perduodant bet kokį raktinio žodžio argumentą. Čia a=2 ir c=3 yra raktinio žodžio argumentas. 3 argumentas 9 yra pozicinis argumentas. Python negali suprasti, kuris raktas turi kokią reikšmę. Šiuo atžvilgiu python veikia taip, kad jis pirmiausia susieja pozicijos argumentą, o tada bet kurį raktinio žodžio argumentą, jei jis yra.
Kaip išvengti klaidos – Išvada
