Як виправити: syntaxerror: позиційний аргумент слідує за аргументом ключового слова


Помилка, з якою ви можете зіткнутися в Python:

 SyntaxError : positional argument follows keyword argument

Ця помилка виникає, коли ви використовуєте позиційний аргумент у функції після використання ключового аргументу .

Ось різниця між ними:

Позиційні аргументи – це ті, які не мають перед собою «ключового слова».

  • Приклад: my_function(2, 2)

Аргументи ключових слів — це ті, перед якими є «ключове слово».

  • Приклад: my_function(a=2, b=2)

Якщо ви використовуєте позиційний аргумент після аргументу ключового слова, Python видасть помилку.

  • Приклад: my_function(a=2, 2)

У наступному прикладі показано, як ця помилка може виникнути на практиці.

Приклад: позиційний аргумент слідує за ключовим аргументом

Припустімо, що у Python є така функція, яка множить два значення, а потім ділить на третє:

 def do_stuff (a,b):
return a*b/c

У наступних прикладах показано дійсні та недійсні способи використання цієї функції:

Правильний спосіб №1: усі позиційні аргументи

Наступний код показує, як використовувати нашу функцію з усіма позиційними аргументами:

 do_stuff ( 4,10,5 )

8.0

Помилки не генеруються, оскільки Python точно знає, які значення використовувати для кожного аргументу функції.

Дійсний метод №2: усі аргументи ключових слів

Наступний код показує, як використовувати нашу функцію з усіма ключовими аргументами:

 do_stuff(a= 4 , b= 10 , c= 5 )

8.0

Знову ж таки, помилки не виникають, оскільки Python точно знає, які значення використовувати для кожного аргументу функції.

Дійсний метод №3: позиційні аргументи перед аргументами ключових слів

Наступний код показує, як використовувати нашу функцію з позиційними аргументами, які використовуються перед аргументами ключового слова:

 do_stuff( 4 ,b= 10 ,c= 5 )

8.0

Помилка не генерується, оскільки Python знає, що аргументу an слід присвоїти значення 4 .

Недійсний спосіб: позиційні аргументи після ключових аргументів

Наступний код показує, як ми можемо спробувати використати функцію з позиційними аргументами, які використовуються після ключових аргументів:

 do_stuff(a= 4 , 10 , 5 )

SyntaxError : positional argument follows keyword argument

Виникла помилка, оскільки ми використали позиційні аргументи після ключових аргументів.

Зокрема, Python не знає, чи слід присвоювати значення 10 і 5 аргументам b або c , тому він не може виконати функцію.

Додаткові ресурси

У наступних посібниках пояснюється, як виправити інші типові помилки в Python:

Як виправити KeyError у Pandas
Як виправити: ValueError: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *