Home > Backend Development > Python Tutorial > How Does Python's *args and kwargs Handle Function Parameters?

How Does Python's *args and kwargs Handle Function Parameters?

Mary-Kate Olsen
Release: 2024-12-22 15:41:11
Original
774 people have browsed it

How Does Python's *args and kwargs Handle Function Parameters?

Parameter Unpacking with and in Python Functions*

In Python functions, the and * syntax allows for greater flexibility in parameter handling.

Positional Argument Unpacking (kwargs)

The *args parameter collects all positional arguments as a tuple. For example:

def foo(x, y, *args):
    for a in args:
        print(a)
Copy after login

Calling foo(1, 2, 3) prints:

1
2
3
Copy after login

Keyword Argument Unpacking (kwargs)

The **kwargs parameter collects all keyword arguments as a dictionary. For example:

def bar(x, y, **kwargs):
    for k, v in kwargs.items():
        print(k, v)
Copy after login

Calling bar(x=1, y=2, name='John') prints:

name John
Copy after login

Combined Unpacking

Both idioms can be combined to allow a mix of fixed and variable arguments. For example:

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)
Copy after login

Calling foo(123, 'a', 'b', apple='red') prints:

123 ('a', 'b') None {'apple': 'red'}
Copy after login

Conversely, kwargs can be used to unpack keyword arguments in function calls. For example:

def foo(a, b, c):
    print(a, b, c)

obj = {'b':10, 'c':'lee'}

foo(100, **obj) # Prints 100 10 lee
Copy after login

List and Tuple Unpacking with *

The * syntax can also be used to unpack lists and tuples when calling functions. For example:

def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]

foo(*baz) # Prints 1 2
Copy after login

Extended Iterable Unpacking

In Python 3, * can be used on the left side of an assignment to unpack iterables into individual variables. For example:

first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
Copy after login

Positional-Only Arguments

Python 3 also introduced positional-only arguments. Functions can specify that only certain arguments can be positional. For example:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
Copy after login

This function only accepts 3 positional arguments. All arguments after * must be passed as keyword arguments.

The above is the detailed content of How Does Python's *args and kwargs Handle Function Parameters?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template