Open In App

What does the Double Star operator mean in Python?

Last Updated : 14 Mar, 2023
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.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads