Параметры и аргументы

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

Тренажер по Python

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

Мы разберем позиционные аргументы, где важен порядок, и именованные аргументы (keyword arguments), которые делают код более читаемым и гибким. Особое внимание уделим параметрам по умолчанию, позволяющим делать аргументы необязательными. Также мы рассмотрим продвинутые темы: использование `*args` для передачи произвольного количества позиционных аргументов и `**kwargs` для именованных. Эти инструменты сделают ваши функции универсальными и мощными.

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

Список тем

Определение функции и передача аргумента

id: 40036_task1

Напишите функцию `greet`, которая принимает один параметр `name` и выводит приветствие. Затем вызовите эту функцию, передав ей строку "Alice".

Заполните пропуски
input1S greet(input2S):
    print(f"Hello, {name}!")

# Вызов функции
input3S("Alice")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Параметры vs Аргументы

id: 40036_task2

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

Перетяните элементы в соответствующие блоки
Параметры
Аргументы
x в строке def func(x):
"text" в строке print_msg("text")
width в строке def rect(width, height):
10 в строке calculate(10, 20)
email в строке def send(email="no"):
user_id в строке get_data(user_id)
Сообщения
Проверить
Показать подсказку

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

id: 40036_task3

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

Выберите правильный вариант ответа
def describe_pet(animal, name):
    print(f"I have a {animal} named {name}.")

describe_pet("Harry", "hamster")
Сообщения
Проверить
Показать подсказку

Типы аргументов и синтаксис

id: 40036_task4

Сопоставьте синтаксические конструкции Python с их описанием или назначением.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Позволяет передавать произвольное число позиционных аргументов
Позволяет передавать произвольное число именованных аргументов
Делает параметр необязательным при вызове
Явное указание имени параметра при вызове для изменения порядка
*args
**kwargs
param=default_value
func(key=value)
Сообщения
Проверить
Показать подсказку

Порядок параметров по умолчанию

id: 40036_task5

В Python существует строгое правило: параметры со значениями по умолчанию не могут стоять перед параметрами без значений по умолчанию. Найдите и исправьте строку объявления функции.

Найдите ошибку и исправьте
def multiply(a, b):
    return a * b
def calculate(x=1, y, z):
    return (x + y) * z
print(calculate(2, 3))
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Вычисление с параметрами по умолчанию

id: 40036_task6

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

Что должно получиться?
def calc_sum(a, b=5, c=10):
    return a + b + c

print(calc_sum(2))
Сообщения
Проверить
Показать подсказку

Использование *args для гибкости

id: 40036_task7

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

Нужно правильно расставить в пропуски предложенные варианты
def sum_all(input1S):
    total = 0
    for num in input2S:
        total += num
    return total

print(sum_all(1, 2, 3, 4))
*args
args
&args
*num
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Правильный порядок типов параметров

id: 40036_task8

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

Расставьте строки в правильном порядке
print(a, args, kwargs)
def mixed_function(a, *args, **kwargs):
mixed_function(1, 2, 3, key='val')
def mixed_function(*args, a, **kwargs):
def mixed_function(**kwargs, *args, a):
Сообщения
Проверить
Показать подсказку

Сборка вызова с именованными аргументами

id: 40036_task9

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

Перетяните в правильном порядке строки из одного блока в другой
print(f"{first} {last}")
def fullname(first, last):
fullname(last="Doe", first="John")
fullname("Doe", "John")
def fullname(first="John", last):
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Комбинирование аргументов: Сложный случай

id: 40036_task10

Это задание проверит ваше понимание приоритетов. Аргумент `c` имеет значение по умолчанию. Мы вызываем функцию, передавая позиционный аргумент, а затем именованные. Что выведет этот код?

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

res = logic(10, c=20, b=5)
print(res)
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру