Jak naprawić: SyntaxError: argument pozycyjny następuje po argumencie słowa kluczowego w Pythonie
W tym artykule omówimy, jak naprawić błąd składniowy polegający na tym, że argument pozycyjny następuje po argumencie słowa kluczowego w Pythonie
Argument to wartość podana funkcji podczas jej wywoływania. Na przykład spójrz na poniższy program –
Pyton
# function> def> calculate_square(num):> > return> num> *> num> > > # call the function> result> => calculate_square(> 10> )> print> (result)> |
Wyjście
100
The oblicz_kwadrat() funkcja przyjmuje argument na jednego który jest liczbą całkowitą lub dziesiętną, oblicza kwadrat liczby i zwraca wartość.
Słowa kluczowe i argumenty pozycyjne w Pythonie
Istnieją dwa rodzaje argumentów, a mianowicie słowa kluczowe i pozycyjne. Jak sama nazwa wskazuje, argument słowa kluczowego jest identyfikowany przez funkcję opartą na jakimś kluczu, natomiast argument pozycyjny jest identyfikowany na podstawie jego pozycji w definicji funkcji. Spójrzmy na to na przykładzie.
Pyton
# 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> )> |
Wyjście:
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
Wyjaśnienie:
- Podczas pierwszego wywołania funkcji podaliśmy 3 argumenty z dowolnym słowem kluczowym. Python interpretował w kolejności, w jakiej zostały zdefiniowane w funkcji uwzględniającej pozycję tych słów kluczowych.
- W drugim wywołaniu funkcji podaliśmy 2 argumenty, ale mimo to wynik jest pokazany, ponieważ podaliśmy 2 argumenty pozycyjne, a funkcja ma wartość domyślną dla ostatniego argumentu C . Zatem w ostatecznym argumencie uwzględniana jest wartość domyślna.
- W trzecim wywołaniu funkcji podawane są trzy argumenty będące słowami kluczowymi. Zaletą podania tego argumentu słowa kluczowego jest to, że nie trzeba pamiętać pozycji, a jedynie słowa kluczowe wymagane do wywołania funkcji. Te słowa kluczowe można podać w dowolnej kolejności, ale funkcja potraktuje je jako pary klucz-wartość, a nie w kolejności, w jakiej są przekazywane.
SyntaxError: argument pozycyjny następuje po argumencie słowa kluczowego
W powyższych 3 przypadkach widzieliśmy, jak Python może interpretować wartości argumentów przekazywane podczas wywołania funkcji. Rozważmy teraz poniższy przykład, który prowadzi do Błąd składni .
Pyton
# 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> )> |
Wyjście:
File '', line 7 foo(a=2, c=3, 9) ^ SyntaxError: positional argument follows keyword argument
Wyjaśnienie:
W tym przykładzie błąd wystąpił ze względu na sposób, w jaki przekazaliśmy argumenty podczas wywołania funkcji. Argument błędu pozycyjnego następuje po argumencie słowa kluczowego, co oznacza, że jeśli w wywołaniu funkcji użyto dowolnego argumentu słowa kluczowego, to zawsze powinno po nim następować argumenty słowa kluczowego. Argumenty pozycyjne można zapisać na początku przed przekazaniem argumentu słowa kluczowego. Tutaj, a=2 I c=3 są argumentem słowa kluczowego. Trzeci argument 9 jest argumentem pozycyjnym. Python nie może tego zinterpretować, który klucz przechowuje jaką wartość. Python działa pod tym względem w ten sposób, że najpierw mapuje argument pozycyjny, a następnie dowolny argument słowa kluczowego, jeśli jest obecny.
Jak uniknąć błędu – Podsumowanie