Como corrigir: syntaxerror: argumento posicional segue argumento de palavra-chave
Um erro que você pode encontrar em Python é:
SyntaxError : positional argument follows keyword argument
Este erro ocorre quando você usa um argumento posicional em uma função depois de usar um argumento de palavra-chave .
Aqui está a diferença entre os dois:
Argumentos posicionais são aqueles que não possuem uma “palavra-chave” à sua frente.
- Exemplo: minha_função(2, 2)
Argumentos de palavra-chave são aqueles que possuem uma “palavra-chave” na frente deles.
- Exemplo: minha_função(a=2, b=2)
Se você usar um argumento posicional após um argumento de palavra-chave, o Python gerará um erro.
- Exemplo: minha_função(a=2, 2)
O exemplo a seguir mostra como esse erro pode ocorrer na prática.
Exemplo: um argumento posicional segue um argumento de palavra-chave
Suponha que temos a seguinte função em Python que multiplica dois valores e depois divide por um terço:
def do_stuff (a,b):
return a*b/c
Os exemplos a seguir mostram maneiras válidas e inválidas de usar esta função:
Maneira válida nº 1: todos os argumentos posicionais
O código a seguir mostra como usar nossa função com todos os argumentos posicionais:
do_stuff ( 4,10,5 )
8.0
Nenhum erro é gerado porque o Python sabe exatamente quais valores usar para cada argumento da função.
Método válido nº 2: todos os argumentos de palavras-chave
O código a seguir mostra como usar nossa função com todos os argumentos de palavras-chave:
do_stuff(a= 4 , b= 10 , c= 5 )
8.0
Novamente, nenhum erro é gerado porque o Python sabe exatamente quais valores usar para cada argumento da função.
Método válido nº 3: argumentos posicionais antes dos argumentos de palavras-chave
O código a seguir mostra como usar nossa função com argumentos posicionais usados antes de argumentos de palavras-chave:
do_stuff( 4 ,b= 10 ,c= 5 )
8.0
Nenhum erro é gerado porque Python sabe que o valor 4 deve ser atribuído ao argumento an .
Maneira inválida: argumentos posicionais após argumentos de palavras-chave
O código a seguir mostra como podemos tentar usar a função com argumentos posicionais usados após os argumentos da palavra-chave:
do_stuff(a= 4 , 10 , 5 )
SyntaxError : positional argument follows keyword argument
Um erro é gerado porque usamos argumentos posicionais após argumentos de palavras-chave.
Especificamente, o Python não sabe se os valores 10 e 5 devem ser atribuídos aos argumentos b ou c , portanto, não consegue executar a função.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas