Open In App

*args and **kwargs in Python

Last Updated : 11 Dec, 2024
Suggest changes
Share
Like Article
Like
Report

In Python, *args and **kwargs are used to allow functions to accept an arbitrary number of arguments. These features provide great flexibility when designing functions that need to handle a varying number of inputs.

Example:

Python
# *args example def fun(*args): return sum(args) print(fun(1, 2, 3, 4)) print(fun(5, 10, 15)) # **kwargs example def fun(**kwargs): for k, val in kwargs.items(): print(k, val) fun(a=1, b=2, c=3) 

Output
10 30 a 1 b 2 c 3 

Let's explore *args and **kwargs in detail:

There are two special symbols to pass multiple arguments:

*args and **kwargs in Python
*args and **kwargs in Python

Special Symbols Used for passing arguments in Python:

  • *args (Non-Keyword Arguments)
  • **kwargs (Keyword Arguments)

Note: “We use the "wildcard" or "*" notation like this - *args OR **kwargs - as our function's argument when we have doubts about the number of  arguments we should pass in a function.” 

Python *args

The special syntax *args in function definitions is used to pass a variable number of arguments to a function. It is used to pass a non-keyworded, variable-length argument list. 

  • For example, we want to make a multiply function that takes any number of arguments and is able to multiply them all together. It can be done using *args.
  • Using * the variable that we associate with the * becomes iterable, meaning you can do things like iterate over it, run some higher-order functions such as map and filter, etc.

Example 1:

Python program to illustrate *args for a variable number of arguments

python
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks') 

Output
Hello Welcome to GeeksforGeeks 

Example 2:

Python program to illustrate *args with a first extra argument.

Python
def fun(arg1, *argv): print("First argument :", arg1) for arg in argv: print("Argument *argv :", arg) fun('Hello', 'Welcome', 'to', 'GeeksforGeeks') 

Output
First argument : Hello Argument *argv : Welcome Argument *argv : to Argument *argv : GeeksforGeeks 

Python **kwargs

The special syntax **kwargs in function definitions is used to pass a variable length argument list. We use the name kwargs with the double star **.

  • A keyword argument is where you provide a name to the variable as you pass it into the function.
  • It collects all the additional keyword arguments passed to the function and stores them in a dictionary.

Example 1: 

Python
def fun(**kwargs): for k, val in kwargs.items(): print("%s == %s" % (k, val)) # Driver code fun(s1='Geeks', s2='for', s3='Geeks') 

Output
s1 == Geeks s2 == for s3 == Geeks 

For s1='Geeks', s1 is key and 'Geeks' is a value. In simple words, what we assign is value and to whom we assign is key. 

Example 2:

Python
def fun(arg1, **kwargs): for k, val in kwargs.items(): print("%s == %s" % (k, val)) # Driver code fun("Hi", s1='Geeks', s2='for', s3='Geeks') 

Output
s1 == Geeks s2 == for s3 == Geeks 

Using both *args and **kwargs

We can use both *args and **kwargs in the same function to accept a mix of positional and keyword arguments.

Example:

Python
def fun(*args, **kwargs): print("Positional arguments:", args) print("Keyword arguments:", kwargs) fun(1, 2, 3, a=4, b=5) 

Output
Positional arguments: (1, 2, 3) Keyword arguments: {'a': 4, 'b': 5} 

In this example, the fun can handle both positional and keyword arguments. The args parameter collects positional arguments into a tuple, while the kwargs parameter collects keyword arguments into a dictionary.


Similar Reads

Article Tags :
Practice Tags :