Як виправити: 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: операнди не можна транслювати з фігурами