Одна ошибка, с которой вы можете столкнуться в 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 знает, что аргументу a должно быть присвоено значение 4 .
Неверный способ: позиционные аргументы после аргументов ключевого слова
Следующий код показывает, как мы можем попытаться использовать функцию с позиционными аргументами, используемыми после аргументов ключевого слова:
do_stuff(a= 4, 10, 5)
SyntaxError : positional argument follows keyword argument
Возникает ошибка, потому что мы использовали позиционные аргументы после аргументов ключевого слова.
В частности, Python не знает, следует ли присваивать значения 10 и 5 аргументам b или c , поэтому он не может выполнить функцию.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами