Jak naprawić: syntaxerror: argument pozycyjny następuje po argumencie słowa kluczowego
Błąd, który możesz napotkać w Pythonie to:
SyntaxError : positional argument follows keyword argument
Ten błąd występuje, gdy używasz argumentu pozycyjnego w funkcji po użyciu argumentu słowa kluczowego .
Oto różnica między nimi:
Argumenty pozycyjne to takie, które nie mają przed sobą „słowa kluczowego”.
- Przykład: moja_funkcja(2, 2)
Argumenty oparte na słowach kluczowych to takie, które mają przed sobą „słowo kluczowe”.
- Przykład: moja_funkcja(a=2, b=2)
Jeśli użyjesz argumentu pozycyjnego po argumencie słowa kluczowego, Python zgłosi błąd.
- Przykład: moja_funkcja(a=2, 2)
Poniższy przykład pokazuje, jak ten błąd może wystąpić w praktyce.
Przykład: Argument pozycyjny następuje po argumencie słowa kluczowego
Załóżmy, że mamy w Pythonie następującą funkcję, która mnoży dwie wartości, a następnie dzieli przez trzecią:
def do_stuff (a,b):
return a*b/c
Poniższe przykłady pokazują prawidłowe i nieprawidłowe sposoby korzystania z tej funkcji:
Prawidłowy sposób nr 1: wszystkie argumenty pozycyjne
Poniższy kod pokazuje, jak używać naszej funkcji ze wszystkimi argumentami pozycyjnymi:
do_stuff ( 4,10,5 )
8.0
Nie są generowane żadne błędy, ponieważ Python dokładnie wie, jakich wartości użyć dla każdego argumentu funkcji.
Prawidłowa metoda nr 2: Wszystkie argumenty słów kluczowych
Poniższy kod pokazuje, jak używać naszej funkcji ze wszystkimi argumentami słów kluczowych:
do_stuff(a= 4 , b= 10 , c= 5 )
8.0
Ponownie nie są zgłaszane żadne błędy, ponieważ Python dokładnie wie, jakich wartości użyć dla każdego argumentu funkcji.
Prawidłowa metoda nr 3: Argumenty pozycyjne przed argumentami dotyczącymi słów kluczowych
Poniższy kod pokazuje, jak używać naszej funkcji z argumentami pozycyjnymi używanymi przed argumentami słów kluczowych:
do_stuff( 4 ,b= 10 ,c= 5 )
8.0
Nie jest generowany żaden błąd, ponieważ Python wie, że argumentowi należy przypisać wartość 4 .
Nieprawidłowy sposób: argumenty pozycyjne po argumentach słów kluczowych
Poniższy kod pokazuje, jak możemy spróbować użyć funkcji z argumentami pozycyjnymi używanymi po argumentach słów kluczowych:
do_stuff(a= 4 , 10 , 5 )
SyntaxError : positional argument follows keyword argument
Wystąpił błąd, ponieważ użyliśmy argumentów pozycyjnych po argumentach słów kluczowych.
Konkretnie Python nie wie, czy do argumentów b czy c należy przypisać wartości 10 i 5 , więc nie jest w stanie wykonać funkcji.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami