How to use *args and **kwargs in Python?
How to use *args and **kwargs in PythonOr, How to use variable length argument lists in Python.
The special syntax, *args
and **kwargs
in function definitions is used to pass a variable number of arguments
to a function. The single asterisk form (*args
) is used to pass
a non-keyworded
, variable-length argument list, and the double asterisk form
is used to pass a keyworded
, variable-length argument list.
Here is an example of how to use the non-keyworded form. This example
passes one formal (positional) argument, and two more variable length arguments.
def
test_var_args
(
farg
,
*
args
):
"formal arg:"
,
farg
for
arg
in
args
:
"another arg:"
,
arg
test_var_args
(
1
,
"two"
,
3
)
Results:
formal arg: 1
another arg: two
another arg: 3
Here is an example of how to use the keyworded form. Again, one formal
argument and two keyworded variable arguments are passed.
def
test_var_kwargs
(
farg
,
**
kwargs
):
"formal arg:"
,
farg
for
key
in
kwargs
:
"another keyword arg:
%s
:
%s
"
%
(
key
,
kwargs
[
key
])
test_var_kwargs
(
farg
=
1
,
myarg2
=
"two"
,
myarg3
=
3
)
Results:
formal arg: 1
another keyword arg: myarg2: two
another keyword arg: myarg3: 3
Using *args
and **kwargs
when calling
a function
This special syntax can be used, not only in function definitions, but
also when calling
a function.
def
test_var_args_call
(
arg1
,
arg2
,
arg3
):
"arg1:"
,
arg1
"arg2:"
,
arg2
"arg3:"
,
arg3
args
=
(
"two"
,
3
)
test_var_args_call
(
1
,
*
args
)
Results:
arg1: 1
arg2: two
arg3: 3
Here is an example using the keyworded form when calling a function:
def
test_var_args_call
(
arg1
,
arg2
,
arg3
):
"arg1:"
,
arg1
"arg2:"
,
arg2
"arg3:"
,
arg3
kwargs
=
{
"arg3"
:
3
,
"arg2"
:
"two"
}
test_var_args_call
(
1
,
**
kwargs
)
Results:
arg1: 1
arg2: two
arg3: 3
页:
[1]