WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Python · Basic · question 17 of 100

What are *args and **kwargs in Python, and when would you use them?

📕 Buy this interview preparation book: 100 Python questions & answers — PDF + EPUB for $5

In Python, *args and **kwargs are special syntax for passing a variable number of arguments to a function.

The *args syntax is used to pass a variable number of non-keyword arguments to a function. When you use *args in a function definition, it allows you to pass any number of arguments to the function, which are then collected into a tuple. Here is an example:

def my_function(*args):
        for arg in args:
            print(arg)
    
    my_function(1, 2, 3, 4, 5)

In this example, we define a function called my_function that takes a variable number of arguments using the *args syntax. Inside the function, we use a for loop to iterate over the arguments and print them to the console. When we call my_function with the arguments 1, 2, 3, 4, 5, the *args syntax collects them into a tuple (1, 2, 3, 4, 5) and passes them to the function.

The **kwargs syntax, on the other hand, is used to pass a variable number of keyword arguments to a function. When you use **kwargs in a function definition, it allows you to pass any number of keyword arguments to the function, which are then collected into a dictionary. Here is an example:

def my_function(**kwargs):
        for key, value in kwargs.items():
            print(key, value)
    
    my_function(name='Alice', age=30, city='New York')

In this example, we define a function called my_function that takes a variable number of keyword arguments using the **kwargs syntax. Inside the function, we use a for loop to iterate over the key-value pairs in the dictionary and print them to the console. When we call my_function with the keyword arguments name=’Alice’, age=30, city=’New York’, the **kwargs syntax collects them into a dictionary ’name’: ’Alice’, ’age’: 30, ’city’: ’New York’ and passes them to the function.

We would use *args and **kwargs when we don’t know in advance how many arguments a function might need to take, or when we want to allow the user to pass a variable number of arguments or keyword arguments to a function. These syntaxes allow us to write more flexible and reusable functions that can handle a wider variety of inputs. However, it’s important to use these syntaxes appropriately, and to document the function’s expected arguments so that users can use them correctly.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Python interview — then scores it.
📞 Practice Python — free 15 min
📕 Buy this interview preparation book: 100 Python questions & answers — PDF + EPUB for $5

All 100 Python questions · All topics