Позиционные и именованные аргументы

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

Этот урок посвящен одной из фундаментальных тем в Python — работе с аргументами функций. Вы узнаете, чем отличаются позиционные аргументы от именованных (keyword arguments), как их правильно смешивать в одном вызове и почему порядок имеет значение. Мы разберем типичные ошибки, такие как передача позиционного аргумента после именованного, и научимся писать читаемый и безопасный код.

Задания выстроены от простого к сложному: сначала мы закрепим терминологию и синтаксис, затем перейдем к поиску ошибок и, наконец, к написанию и сборке полноценных конструкций. Внимательно читайте условия и следите за подсказками!

Список тем

1. Терминология: Параметры и Аргументы

id: 40038_task_args_compare_1

Важно различать, что мы пишем при создании функции, а что — при её вызове. Сопоставьте понятия с примерами кода.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Объявление функции с параметрами
Вызов с позиционными аргументами
Вызов с именованными аргументами
func(a=10, b=20)
func(10, 20)
def func(a, b):
Сообщения
Проверить
Показать подсказку

2. Важность порядка аргументов

id: 40038_task_args_predict_1

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

Выберите правильный вариант ответа
def subtract(a, b):
    return a - b

res = subtract(10, 3)
print(res)
Сообщения
Проверить
Показать подсказку

3. Использование именованных аргументов

id: 40038_task_args_replace_1

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

Заполните пропуски
def create_profile(username, email):
    print(f"User: {username}, Mail: {email}")

# Вызываем функцию, меняя порядок аргументов
create_profile(input1S="admin@example.com", input2S="AdminUser")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Золотое правило: Позиционные перед именованными

id: 40038_task_args_error_1

В Python существует строгое правило: при вызове функции позиционные аргументы всегда должны идти перед именованными. Найдите строку, где это правило нарушено, и исправьте вызов, сделав все аргументы именованными для ясности (порядок имен при этом не важен, но сохраните логику данных).

Найдите ошибку и исправьте
def order(item, amount):
    print(f"{amount} x {item}")
order(item="Pizza", 100)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Классификация вызовов функций

id: 40038_task_args_sort_1

Распределите примеры вызовов функции `def func(a, b, c): pass` по категориям. Обратите внимание на синтаксис.

Перетяните элементы в соответствующие блоки
Корректные вызовы
Ошибка синтаксиса (SyntaxError)
func(1, 2, 3)
func(a=1, b=2, c=3)
func(1, b=2, c=3)
func(a=1, 2, 3)
func(1, b=2, 3)
func(c=3, a=1, b=2)
Сообщения
Проверить
Показать подсказку

6. Вычисление результата со смешанными аргументами

id: 40038_task_args_give_result_1

Проследите за выполнением кода. Функция возводит число в степень. Обратите внимание, какие значения попадают в `base`, а какие в `exp`. Введите числовой результат.

Что должно получиться?
def power(base, exp):
    return base  exp

res = power(4, exp=2)
print(res)
Сообщения
Проверить
Показать подсказку

7. Отправка сообщения

id: 40038_task_args_bank_1

Используя банк токенов, соберите вызов функции `send_sms`, чтобы отправить сообщение 'Hello' на номер '911'. Используйте смешанный стиль: номер передайте позиционно, а текст — именованно.

Нужно правильно расставить в пропуски предложенные варианты
def send_sms(phone, message):
    print(f"To {phone}: {message}")

send_sms(input1S, input2S=input3S)
'911'
message
'Hello'
phone
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

8. Сборка функции с параметрами по умолчанию

id: 40038_task_args_bfp_1

Соберите код, который определяет функцию `greet` с параметром по умолчанию для приветствия, а затем вызывает её, используя только имя. Одно из выражений вызова лишнее (содержит ошибку порядка аргументов).

Перетяните в правильном порядке строки из одного блока в другой
print(greet(name="Alice"))
def greet(name, msg="Hi"):
    return f"{msg}, {name}"
print(greet(name="Bob", "Hello"))
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

9. Логика работы именованных аргументов

id: 40038_task_args_seq_1

Расставьте строки кода в правильном порядке. Мы объявляем функцию расчета цены, затем вызываем её, явно указывая скидку, но полагаясь на цену по умолчанию (которой в данном коде нет, поэтому её нужно передать). В данном случае нужно вызвать функцию так, чтобы цена была 100, а скидка 10.

Расставьте строки в правильном порядке
final_price = get_price(discount=10, price=100)
def get_price(price, discount):
    return price - discount
print(final_price)
Сообщения
Проверить
Показать подсказку

Python: запуск кода в браузере

id: 40038_compiler
🐍
Запустить тренажёр (Python)
НайтиКурс.Ру