Какие типы аргументов есть в Python?

1. Позиционные аргументы (Positional arguments)

Передаются функции по порядку, и их значение определяется порядком вызова.

def func(a, b):
    return a + b

func(1, 2)  # a=1, b=2

2. Именованные аргументы (Keyword arguments)

Передаются явно с указанием имени параметра. Порядок не важен.

func(b=2, a=1)  # a=1, b=2

3. Аргументы по умолчанию (Default arguments)

Параметры с заданным значением по умолчанию, если аргумент не передан.

def func(a, b=5):
    return a + b

func(3)    # b=5 по умолчанию, результат 8
func(3, 7) # b=7, результат 10

4. *Переменное число позиционных аргументов (args)

Позволяет передать произвольное число позиционных аргументов, которые внутри функции собираются в кортеж.

def func(*args):
    return sum(args)

func(1, 2, 3, 4)  # args = (1, 2, 3, 4), результат 10

5. **Переменное число именованных аргументов (kwargs)

Позволяет передать произвольное число именованных аргументов, которые внутри функции собираются в словарь.

def func(**kwargs):
    return kwargs

func(a=1, b=2)  # kwargs = {'a':1, 'b':2}

6. Позиционные только аргументы (Python 3.8+)

Аргументы, которые можно передать только позиционно — указаны через / в объявлении.

def func(a, b, /, c, d):
    pass

func(1, 2, c=3, d=4)  # a и b — только позиционно

7. Именованные только аргументы (Python 3.8+)

Аргументы, которые можно передать только по имени — указаны через * в объявлении.

def func(a, b, *, c, d):
    pass

func(1, 2, c=3, d=4)  # c и d — только именованные

Итог

  • Позиционные: передаются по порядку.

  • Именованные: передаются по имени.

  • По умолчанию: имеют значение по умолчанию.

  • *args: кортеж произвольных позиционных аргументов.

  • **kwargs: словарь произвольных именованных аргументов.

  • / и * для позиционных и именованных только аргументов (нововведение).

Last updated

Was this helpful?