Content · Programming · Python

Python Argument Unpacking with * and **

The * operator unpacks an iterable into positional arguments; ** unpacks a mapping into keyword arguments. The called function still validates its normal signature.

2 views Published Oct 17, 2026 Updated Oct 18, 2026 Admin

This guide explains argument unpacking with * and ** through a focused Python example. You will learn the behavior to expect, why it matters in a real program, and how to recognize the common mistakes before applying it in your own project.

What You Will Learn


The * operator unpacks an iterable into positional arguments; ** unpacks a mapping into keyword arguments. The called function still validates its normal signature.

When and Why to Use It


The following example focuses on a practical use of Argument Unpacking with * and **.

Step-by-Step Example


def describe_order(product_name, count, *, urgent=False):
    return f"{count} x {product_name}; urgent={urgent}"

order_details = ["Pencils", 4]
order_options = {"urgent": True}
print(describe_order(*order_details, **order_options))

Understanding the Example


The list supplies the first two parameters in order, while the dictionary supplies urgent by name. The function receives normal arguments.

Expected Output


4 x Pencils; urgent=True

Important Behavior and Edge Cases


A missing parameter, extra item, duplicate keyword or wrong mapping key raises TypeError.

Try It Yourself


Unpack a tuple of dimensions into an area function.

Common Beginner Mistakes


  • A missing parameter, extra item, duplicate keyword or wrong mapping key raises TypeError.
  • Confusing a returned value with printed output, or failing to verify a function’s behavior with different input values.
  • Skipping the practice step and assuming the example covers every input. Test at least one normal case and one edge case relevant to this topic.

Key Takeaways


  • The * operator unpacks an iterable into positional arguments; ** unpacks a mapping into keyword arguments.
  • The list supplies the first two parameters in order, while the dictionary supplies urgent by name.
  • Apply the technique deliberately, checking its documented input requirements and failure behavior before integrating it into a larger project.
Share this resourceSend this page to someone who may find it useful.