Variable Length Arguments in Python
In Python, you can use formal arguments (also known as positional or keyword arguments), a non-keyworded variable-length argument list (*args), and a keyword variable-length argument list (**kwargs) together in the same function. The function signature should follow a specific order:
Positional/Keyword arguments: These are your regular function parameters.
*args: This captures additional positional arguments as a tuple.**kwargs: This captures additional keyword arguments as a dictionary.
Example of Using All Three Together
def example_function(arg1, arg2, *args, **kwargs):
print(f"arg1: {arg1}")
print(f"arg2: {arg2}")
# Handling *args
print("Additional positional arguments (*args):")
for arg in args:
print(arg)
# Handling **kwargs
print("Additional keyword arguments (**kwargs):")
for key, value in kwargs.items():
print(f"{key}: {value}")
# Example call
example_function(10, 20, 30, 40, 50, name="Alice", age=30, city="New York")Explanation
Formal Arguments (
arg1,arg2): These are the standard positional/keyword arguments that must be provided when calling the function.Non-keyworded Variable Length Argument List (
*args): This captures any additional positional arguments passed to the function as a tuple. In the example above,30,40, and50are captured by*args.Keyword Variable Length Argument List (
**kwargs): This captures any additional keyword arguments passed to the function as a dictionary. In the example above,name="Alice",age=30, andcity="New York"are captured by**kwargs.
Output
When calling example_function(10, 20, 30, 40, 50, name="Alice", age=30, city="New York"), the output will be:
arg1: 10
arg2: 20
Additional positional arguments (*args):
30
40
50
Additional keyword arguments (**kwargs):
name: Alice
age: 30
city: New YorkOrder of Arguments
In the function signature:
Formal arguments come first.
*argscomes next to capture any extra positional arguments.**kwargscomes last to capture any extra keyword arguments.
This structure ensures that the function can handle a mix of fixed and flexible numbers of arguments.
Last updated
Was this helpful?