Как исправить: синтаксическая ошибка: позиционный аргумент следует за аргументом ключевого слова.


Ошибка, с которой вы можете столкнуться в 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: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *