Python support two types of argument passing during a function call, Positional and Keyword Arguments. In Positional arguments, we do not specify the parameter names, and the argument must appear in the particular order as the parameter defined in the Function definition.
For example
def fun(para1, para2):
pass
fun(arg1, arg2)
But in Keyword arguments, we can specify the parameter name and its value during the function call. And here, it is not necessary to maintain the argument order. For example
def fun(para1, para2):
pass
fun(para2= arg2, para1= arg1)
We can also specify the arguments as a mixer of positional and keyword arguments, but there the positional argument needs to be specified before the keyword argument. Otherwise, we will receive the
SyntaxError: positional argument follows keyword argument
Error. In this Python guide, we will learn what is
SyntaxError: positional argument follows keyword argument
Error in Python and how to debug it. So let's get started with the error statement.
Python Error: SyntaxError: positional argument follows keyword argument
The Error Statement
SyntaxError: positional argument follows keyword argument
is divided into two parts:
- Python Exception
- Error Message
1. Python Exception (
SyntaxError
)
Syntax Error is raised in a Python program when we write an invalid code structure that the Python interpreter could not understand. Misspelled keywords, empty blocks, putting a keyword in a worn place, and leaving commas between elements are some of the common SyntaxError exceptions.
2. Error Message(
positional argument follows keyword argument
)
We receive this error message when we try to pass a keyword argument before a positional argument while calling a function.
Error Example
According to the Python Syntax, when we use the Positional and Keyword arguments simultaneously while calling a function. The positional argument must be specified before the Keyword argument. So, Python can first map the Positional arguments with the Parameters according to their order, and if there is a keyword argument, it could be mapped according to the Parameter name.
Let's create an example where we violate this Syntax of Python and try to pass the Keyword argument before the positional argument.
Example
names = ["Rahul", "Ravi", "Rajesh"]
medals = ["Gold", "Silver", "Bronze"]
def score_board(names, medals):
ranks=[1,2,3]
for name, medal, rank in zip(names, medals, ranks):
print(rank, name,"------>", medal)
score_board(names=names, medals)
Output
File "main.py", line 11
score_board(names=names, medals)
^
SyntaxError: positional argument follows keyword argument
Break the code
In the above example, we are getting the
SyntaxError: positional argument follows keyword argument
at line 11 with the statement
score_board(names=names, medals)
. This is because, at function call, we are specifying the keyword argument
names=names
before the positional argument
medals
.
If we look at the function calling statement, the order of arguments is still maintained, the
names
argument is still before the
medals
argument. But when we use the mixture of positional and keyword arguments, we also need to make sure that the positional argument must be specified first, then the keyword arguments.
Solution
In the above problem, we only have two argument values, which means we can either make them positional or keyword, and both will do the trick for us. But here, we are trying to use the combination of Positional and Keyword. The right solution for our above example would be to make the
name
argument positional and
medals
argument keyword.
Example Solution
names = ["Rahul", "Ravi", "Rajesh"]
medals = ["Gold", "Silver", "Bronze"]
def score_board(names, medals):
ranks=[1,2,3]
for name, medal, rank in zip(names, medals, ranks):
print(rank, name,"------>", medal)
score_board(names,medals= medals)
Output
1 Rahul ------> Gold
2 Ravi ------> Silver
3 Rajesh ------> Bronze
Wrapping Up!
In Python, when we call a function, we either use positional arguments or Keyword Arguments. In method calls, we generally use Keyword arguments, and we use positional arguments for the user-defined function. You will rarely be using both argument types at once. Still, you should know that the positional argument must be positioned before the keyword arguments, else you will encounter the
SyntaxError: positional argument follows keyword argument
Error.
If you are stuck with this Python error, you can share your code in the comment section, we will try to help you in debugging.
People are also reading:
- How to become a Python Developer?
- Python TypeError: can only concatenate str (not “int”) to str Solution
- Top Python Libraries
- Python TypeError: ‘float’ object is not subscriptable Solution
- Absolute vs Relative Imports in Python
- Python TypeError: ‘builtin_function_or_method’ object is not subscriptable Solution
- How to install Jupyter Notebook?
- Python indexerror: list assignment index out of range Solution
- Python Developer Skills
- Python typeerror: string indices must be integers Solution
Leave a Comment on this Post