Open In App

What does the Double Star operator mean in Python?

Improve
Improve
Like Article
Like
Save
Share
Report

Double Star or (**) is one of the Arithmetic Operator (Like +, -, *, **, /, //, %) in Python Language. It is also known as Power Operator.

What is the Precedence of Arithmetic Operators?

Arithmetic operators follow the same precedence rules as in mathematics, and they are: exponential is performed first, multiplication and division are performed next ,followed by addition and subtraction.

Arithmetic operators priorities order in Decreasing Mode:

()   >>   **   >>   *  >>  /  >>  //  >>  %   >>   +   >>   -

Uses of Double Star operator:

As Exponentiation Operator

For numeric data types, double-asterisk (**) is defined as an Exponentiation Operator:

Example:

Python3




# Python code to Demonstrate the Exponential Operactor
 
a = 2
b = 5
 
# using double asterisk operator
c = a**b
print(c)
 
 
# using double asterisk operator
z = 2 * (4 ** 2) + 3 * (4 ** 2 - 10)
print(z)


Output:

32
50

 

As arguments in functions and methods

In a function definition, the double asterisk is also known  **kwargs. They used to pass a keyword, variable-length argument dictionary to a function. The two asterisks (**) are the important element here, as the word kwargs is conventionally used, though not enforced by the language.

First, let’s simply print out the **kwargs arguments that we pass to a function. We’ll create a short function to do this:

Example:

Python3




# Python Program to create a function to get a dictionary of names.
# Here, we will start with a dictionary of three names
 
 
def function(**kwargs):
    for key, value in kwargs.items():
        print("The value of {} is {}".format(key, value))
 
 
function(name_1="Shrey", name_2="Rohan", name_3="Ayush")


Output:

The value of name_1 is Shrey
The value of name_2 is Rohan
The value of name_3 is Ayush

Now here is another example where we will pass additional arguments to the function to show that **kwargs will accept any number of arguments:

Python3




# Python Program to create a function to get a dictionary of as many names
# you want to include in your Dictionary
 
 
def function(**kwargs):
    for key, value in kwargs.items():
        print("The value of {} is {}".format(key, value))
 
 
function(
    name_1="Ayush",
    name_2="Aman",
    name_3="Harman",
    name_4="Babber",
    name_5="Striver",
)


Output:

The value of name_1 is Ayush
The value of name_2 is Aman
The value of name_3 is Harman
The value of name_4 is Babber
The value of name_5 is Striver

The time complexity of the given Python program is O(n), where n is the number of key-value pairs in the input dictionary. 

The auxiliary space complexity of the program is also O(n), as the program stores the input dictionary in memory while iterating over it.

Conclusion:

Using **kwargs provides us with the flexibility to use keyword arguments in our program. When we use **kwargs as a parameter, we don’t need to know how many arguments we would eventually like to pass to a function. Creating functions that accept **kwargs are best used in situations where you expect that the number of inputs within the argument list will remain relatively small.



Last Updated : 14 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads