0Pricing
Python Academy · Урок

args и kwargs

Принимайте позиционные и именованные аргументы переменной длины.

«args и kwargs» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

*args и **kwargs позволяют функциям принимать переменное количество позиционных и именованных аргументов.

Что такое *args?

def f(*args) собирает все дополнительные позиционные аргументы в кортеж с именем args.
def f(*args):
    print(args)
f(1, 2, 3)  # (1, 2, 3)

Перебор *args

for x in args: ... работает, потому что args — это кортеж. Также можно использовать sum(args), max(args) и другие функции.
def total(*args):
    return sum(args)
print(total(1, 2, 3, 4, 5))

Что такое **kwargs?

def f(**kwargs) собирает все дополнительные именованные аргументы в словарь с именем kwargs.
def f(**kwargs):
    print(kwargs)
f(name='Alice', age=30)

Использование **kwargs

Обращайтесь к kwargs как к любому словарю: for key, val in kwargs.items():
def display(**kwargs):
    for k, v in kwargs.items():
        print(f'{k}: {v}')
display(x=1, y=2)

Сочетание обычных параметров, *args и **kwargs

def f(a, b, *args, **kwargs): сначала идут обычные параметры, затем *args, потом параметры только по имени и **kwargs.
def f(a, *args, **kwargs):
    print(a, args, kwargs)
f(1, 2, 3, x=4)

Передача аргументов дальше

def wrapper(*args, **kwargs): return real_func(*args, **kwargs) полностью передаёт все аргументы обёрнутой функции.
def real(a, b, c=0): return a+b+c
def wrapper(*args, **kwargs): return real(*args, **kwargs)
print(wrapper(1, 2, c=3))

Распаковка с помощью * при вызовах

*iterable распаковывает любой итерируемый объект в позиционные аргументы. **mapping распаковывает словарь в именованные аргументы.
def add(a, b, c): return a+b+c
args = [1, 2, 3]
print(add(*args))

Расширенная распаковка итерируемых объектов

first, *rest = [1,2,3,4] даёт first=1 и rest=[2,3,4]. *head, last = lst даёт последний элемент.
first, *rest = [1, 2, 3, 4]
print(first, rest)
*head, last = [1, 2, 3]
print(head, last)

Аннотации типов для *args и **kwargs

def f(*args: int, **kwargs: str) аннотирует тип каждого отдельного элемента, а не контейнера.
def f(*args: int, **kwargs: str) -> None:
    print(args, kwargs)
f(1, 2, name='Alice')

Распространённые шаблоны

Сама функция print() использует *args — print(*my_list) выводит каждый элемент через пробел. Это очень характерный для Python приём.
lst = [1, 2, 3]
print(*lst)  # 1 2 3

Быстрая проверка

Какой тип создаёт *args внутри функции?

Итоги

*args — это кортеж дополнительных позиционных аргументов. **kwargs — словарь дополнительных именованных аргументов. Используйте их для гибких программных интерфейсов и передачи аргументов дальше.

Продолжайте

Отличная работа! Перейдите к следующему уроку, чтобы продолжить обучение.

Часто задаваемые вопросы

Урок «args и kwargs» бесплатный?

Да — полный текст урока «args и kwargs» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «args и kwargs»?

Принимайте позиционные и именованные аргументы переменной длины. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «args и kwargs»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение и вызов функций
  2. Аргументы по умолчанию и именованные аргументы
  3. args и kwargs
  4. Возвращаемые значения и область видимости
← Назад к Python Academy