Understanding the Significance of (Star/Asterisk) and * (Double Star/Asterisk) in Parameters
In Python function definitions, the and * operators provide powerful idioms for handling arbitrary numbers of arguments.
Positional Arguments: *args
- The *args parameter allows a function to accept a variable number of positional arguments.
- These arguments are collected into a tuple that can be accessed within the function.
Example:
def foo(x, y, *args):
pass
foo(1, 2, 3)
# args = (3,)
Copy after login
Keyword Arguments: kwargs**
- The **kwargs parameter allows a function to accept any number of keyword arguments.
- These arguments are collected into a dictionary where the keys are the argument names and the values are the argument values.
Example:
def bar(x, y, **kwargs):
pass
bar(x=1, y=2, name='John', age=27)
# kwargs = {'name': 'John', 'age': 27}
Copy after login
Mixing Fixed and Variable Arguments
- Both args and *kwargs can be combined with normal fixed arguments to provide flexibility in function definitions.
Example:
def foo(kind, *args, bar=None, **kwargs):
print(kind, args, bar, kwargs)
foo(123, 'a', 'b', apple='red')
# 123 ('a', 'b') None {'apple': 'red'}
Copy after login
Additional Uses
- can be used to unpack argument lists when calling a function.
- In Python 3, and * can be used on the left side of an assignment to unpack iterables into variables.
- Python 3.6 introduces a new syntax that restricts positional arguments after *.
Note:
- Python uses dictionaries to represent keyword arguments, which maintain insertion order in Python 3.6 .
-
kwargs dictionaries maintain insertion order in Python 3.7 and above, even for non-CPython implementations.
The above is the detailed content of How Do `*args` and `kwargs` Handle Variable Arguments in Python Functions?. For more information, please follow other related articles on the PHP Chinese website!