Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Arbitrary Arguments (*args) | Function Arguments in Details
Mastering Python: Annotations, Errors and Environment
course content

Course Content

Mastering Python: Annotations, Errors and Environment

Mastering Python: Annotations, Errors and Environment

1. Annotations
2. Function Arguments in Details
3. Error Handling
4. Virtual Environment

bookArbitrary Arguments (*args)

In Python, the *args syntax is used to pass a varying number of arguments to a function. The *args parameter allows you to pass any number of positional arguments to a function, and it collects them into a tuple.

Let's implement the multiply() function that can accept a variable number of arguments:

1234
def multiply(*args): print(args, type(args)) multiply(12, 11, 52, 33)
copy

The function multiply() accepts a variable number of arguments using the syntax *args. The arguments are then stored in a tuple called args. We can use a loop to multiply all the arguments together, as shown below:

1234567891011
def multiply(*args): result = 1 for arg in args: print(result, "*", arg) result *= arg return result print("Result =", multiply(12, 11, 52, 33)) print("Result without args:", multiply())
copy

Now, you can see that our function works with no arguments as well as with many arguments.

Note

The parameter *args is commonly referred to as variable-length argument or arbitrary argument list.

If we need a function that should take from one/two/... to many arguments, a combination of positional arguments and arbitrary arguments, such as *args.

12345678
def multiply(first, second, *args): result = first * second for arg in args: result *= arg return result print("Correct:", multiply(5, 2, 5, 1, 3)) print("Not correct", multiply(1))
copy

In the example above, you can see that our function returned 150 when called with 2 or more arguments and raised a TypeError when called with fewer than 2 arguments.

It is important to note that the positional arguments should be defined before the optional arguments:

123456789
def multiply(first, second, *args): print("first =", first) print("second =", second) result = first * second for arg in args: result *= arg return result print("Result:", multiply(11, 22, first=33, second=44, 55))
copy

Everything was clear?

How can we improve it?

Thanks for your feedback!

Section 2. Chapter 3
We're sorry to hear that something went wrong. What happened?
some-alt