Jak naprawić: SyntaxError: argument pozycyjny następuje po argumencie słowa kluczowego w Pythonie

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:

  1. 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.
  2. 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.
  3. 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