Opening the book…
Functions can take a variable number of arguments. A parameter name that begins with * gathers arguments into a tuple. For example, printall takes any number of arguments and prints them:
def printall(*args):
print(args)
The gather parameter can have any name you like, but args is conventional. Here’s how the function works:
>>> printall(1, 2.0, '3') (1, 2.0, '3')
The complement of gather is scatter. If you have a sequence of values and you want to pass it to a function as multiple arguments, you can use the * operator. For example, divmod takes exactly two arguments; it doesn’t work with a tuple:
>>> t = (7, 3) >>> divmod(t) TypeError: divmod expected 2 arguments, got 1
But if you scatter the tuple, it works:
>>> divmod(*t) (2, 1)
Many of the built-in functions use variable-length argument tuples. For example, max and min can take any number of arguments:
>>> max(1, 2, 3) 3
But sum does not.
>>> sum(1, 2, 3) TypeError: sum expected at most 2 arguments, got 3
As an exercise, write a function called sum_all that takes any number of arguments and returns their sum.
This page titled 12.4: Variable-length argument tuples was last modified on Tue, 01 Dec 2020 03:31:00 GMT and is shared under a CC BY-NC 3.0 license and was authored, remixed, and/or curated by Allen B. Downey (Green Tea Press) via source content that was edited to the style and standards of the LibreTexts platform.
The book could not be loaded just now.