In Python programming, a function can be used as reusable code that performs similar operations. But a function cannot take variable numbers of arguments, and because if you pass a variable number of arguments, it will throw TypeError.
If you define a function with three arguments and at the time of call, if you pass five arguments, then it will throw the TypeError.
To resolve the TypeError issue, we can either use *args or **kwargs. Let’s understand both in detail.
Understanding *args
To pass a variable number of arguments to a function in Python, use the *args (Non-Keyword Arguments). Python has *args, allowing us to pass a variable number of non-keyword arguments to a function.
We generally use *args as an argument when we are uncertain about the total number of arguments to pass in the function.
def multiplier(*num):
multi = 1
for i in num:
multi = multi * i
print("multiplier:", multi)
multiplier(1, 2)
multiplier(1, 2, 3, 4)
multiplier(1, 2, 3, 4, 5)
Output
multiplier: 2
multiplier: 24
multiplier: 120
In this example, we pass *num as an argument representing variable-length arguments. For instance, we call the multiplier function the first time with two arguments, the second time with four arguments, and the third time with five arguments.
Inside the multiplier(*num) function, we used for loop, which multiplies the passed argument and prints the result.
Understanding **kwargs
To pass a variable-length keyword argument to a function in Python, use the **kwargs. To represent kwargs, we denote with a double asterisk ** before the parameter name.
The arguments are passed as a dictionary, and these arguments make a dictionary inside a function with a name same as the parameter excluding double asterisk **.
def spider_man(**arguments):
print("\nData type of argument:",type(data))
for key, value in data.items():
print("{} is {}".format(key, value))
spider_man(Firstname="Peter", Lastname="Parker", Age=22, Phone=1234567890)
spider_man(Firstname="Peter 2", Lastname="Parker", Email="peter@nomail.com", Country="USA", Age=45, Phone=9876543210)
spider_man(Firstname="Peter 3", Lastname="Parker", Email="parker@nomail.com", Country="USA")
Output
Data type of argument: <class 'dict'>
Firstname is Peter
Lastname is Parker
Age is 22
Phone is 1234567890
Data type of argument: <class 'dict'>
Firstname is Peter 2
Lastname is Parker
Email is peter@nomail.com
Country is USA
Age is 45
Phone is 9876543210
Data type of argument: <class 'dict'>
Firstname is Peter 3
Lastname is Parker
Email is parker@nomail.com
Country is USA
In the above code, we have a function spider_man() with **arguments as a parameter. We passed two dictionaries with variable argument length to the spider_man() function. Then, we used for loop inside spider_man() function, which works on the data of the given dictionary and prints the value of the dictionary.
To format the output in Python, we can use the str.format() method. The *args and **kwargs make the function more adjustable and flexible. The **kwargs has all the methods other dictionaries can have.
In this example, you can say that **kwargs will create a dictionary that is why it has a key and value. To get the value based on the key, you can use the get() method.
Python kwargs get
To get the value associated with a specific key that does not exist in the Python dictionary, use the **kwargs get() method.
self.value = kwargs.get('value',"default value")
If you use a specific argument with a particular default value, you can write the following.
value = dict.get(key, default_when_key_is_missing)
We generally use the following code to get the value associated with a specific key in the Python dictionary.
value = dict[key]
But, trying to get a value for a key that doesn’t exist will throw an exception.
Fortunately, there is a **kwargs get() method, which we can use, and it is very convenient in this case.
If we prefer to assign the class attribute more traditionally, self.value = kwargs[‘value’], we have to confirm that the key age and a default value exist in kwargs before asking for it.
To add the needed keys to kwargs and set their default values, we can use the following code:
kwargs.setdefault('age', 'x')
That’s it for the Python kwargs get tutorial.
More posts

Krunal Lathiya is an Information Technology Engineer. By profession, he is a web developer with knowledge of multiple back-end platforms including Python. Krunal has written many programming blogs which showcases his vast knowledge in this field.