Is it possible to set a default value for a variable argument list in Python 3?
Something like:
def do_it(*args=(2, 5, 21)):
pass
I wonder that a variable argument list is of type tuple
but no tuple is accepted here.
Default values indicate that the function argument will take that value if no argument value is passed during the function call. The default value is assigned by using the assignment(=) operator of the form keywordname=value.
Default argument is fallback value In Python, a default parameter is defined with a fallback value as a default argument. Such parameters are optional during a function call. If no argument is provided, the default value is used, and if an argument is provided, it will overwrite the default value.
You can send any data types of argument to a function (string, number, list, dictionary etc.), and it will be treated as the same data type inside the function.
If not syntactically, then depending on what behavior you want:
def do_it(*args):
if not args: args = (2, 5, 21)
or
def do_it(a=2, b=5, c=21, *args):
args = (a,b,c)+args
should do it.
Initializing a list like that usually isn't a good idea.
The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes. For example, the following function accumulates the arguments passed to it on subsequent calls
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
rint f(3)
This will print
[1]
[1, 2]
[1, 2, 3]
I generally check it something is passed in and if not then init it in the function body.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With