w3resource

What is the purpose of the *args and **kwargs syntax in function definitions

Understanding *args and **kwargs in Python Functions

The '*args` and '**kwargs' syntax in function definitions allows Python functions to accept a variable number of arguments. These special syntaxes provide flexibility when you don't know how many arguments will be passed to the function. They also provide flexibility when you want to accept both positional and keyword arguments in a single function.

args (Arbitrary Positional Arguments):

  • The *args syntax allows a function to accept an arbitrary number of positional arguments.
  • In the function definition, *args is used as a parameter. A tuple is created by collecting any additional positional arguments provided during the function call.
  • It is a convention to use args, but you can use any other name with the * prefix.

Example: Using *args

def add_elements(*args):
    total = 0
    for num in args:
        total += num
    return total
result = add_elements(1, 2, 3, 4, 5, 6)
print(result)  # Output: 21

kwargs (Arbitrary Keyword Arguments):

  • The **kwargs syntax allows a function to accept an arbitrary number of keyword arguments.
  • In the function definition, **kwargs is used as a parameter. It collects any additional keyword arguments provided during the function call. The arguments are stored in a dictionary with their names as keys and their values as values.
  • kwargs is a convention, but you can use any other name with the ** prefix.

Example: Using **kwargs

def print_information(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
print_information(name="Vihaan Simona", age=25, city="Pretoria")

Output:

name: Vihaan Simona
age: 25
city: Pretoria

Combining *args and **kwargs:

It is possible to accept any combination of positional and keyword arguments with both *args and **kwargs in the same function definition.

Example: Using *args and **kwargs together

def display_arguments(*args, **kwargs):
    print("Positional arguments:", args)
    print("Keyword arguments:", kwargs)

display_arguments(1, 2, 3, "USA", name="Chidike Benayah", age=25)

Output:

Positional arguments: (1, 2, 3, 'USA')
Keyword arguments: {'name': 'Chidike Benayah', 'age': 25}


Follow us on Facebook and Twitter for latest update.