Как исправить: синтаксическая ошибка: позиционный аргумент следует за аргументом ключевого слова.
Ошибка, с которой вы можете столкнуться в Python:
SyntaxError : positional argument follows keyword argument
Эта ошибка возникает, когда вы используете позиционный аргумент в функции после использования аргумента ключевого слова .
Вот разница между ними:
Позиционные аргументы – это аргументы, перед которыми нет «ключевого слова».
- Пример: моя_функция(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: невозможно преобразовать число с плавающей запятой NaN в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.