DEV Community

Odipo Otieno (KwargDevs)
Odipo Otieno (KwargDevs)

Posted on

4

Python *args and **kwargs

[python]: In Python, *args and **kwargs are used to pass a variable number of arguments to a function. They allow for more flexible function definitions and can handle an arbitrary number of positional and keyword arguments, respectively.

*args

  • *args allows a function to accept any number of positional arguments.
  • The arguments are accessible as a tuple within the function.

Example:

def func_with_args(*args):
    for arg in args:
        print(arg)

func_with_args(1, 2, 3, 4)
# Output:
# 1
# 2
# 3
# 4
Enter fullscreen mode Exit fullscreen mode

**kwargs

  • **kwargs allows a function to accept any number of keyword arguments.
  • The arguments are accessible as a dictionary within the function.

Example:

def func_with_kwargs(**kwargs):
    for key, value in kwargs.items():
        print(f"{key} = {value}")

func_with_kwargs(a=1, b=2, c=3)
# Output:
# a = 1
# b = 2
# c = 3
Enter fullscreen mode Exit fullscreen mode

Combining *args and **kwargs

You can use both *args and **kwargs in a single function to handle both positional and keyword arguments.

Example:

def func_with_args_kwargs(*args, **kwargs):
    for arg in args:
        print(f"arg: {arg}")
    for key, value in kwargs.items():
        print(f"{key} = {value}")

func_with_args_kwargs(1, 2, 3, a=4, b=5)
# Output:
# arg: 1
# arg: 2
# arg: 3
# a = 4
# b = 5
Enter fullscreen mode Exit fullscreen mode

Practical Use Case

These constructs are particularly useful when writing functions that need to handle a flexible number of inputs, such as wrappers or decorators, or when designing APIs that need to accept a variety of parameters without requiring a rigid function signature.

By using *args and **kwargs, you can create more adaptable and reusable functions.

Top comments (0)

This post blew up on DEV in 2020:

js visualized

🚀⚙️ JavaScript Visualized: the JavaScript Engine

As JavaScript devs, we usually don't have to deal with compilers ourselves. However, it's definitely good to know the basics of the JavaScript engine and see how it handles our human-friendly JS code, and turns it into something machines understand! 🥳

Happy coding!

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay