Вы пишете функцию среднего значения, и в коде чаще всего уже есть список values (например, из данных). Какой интерфейс обычно более универсален и читаем?
A
def mean(*values): ...: готовую коллекцию приходится распаковывать через *listB
def mean(**values): ...: интерфейс принимает пары ключ-значение, не последовательностьC
def mean(values): ...: один параметр-итерируемый, который принимает list или tupleD
def mean(items, weights=None): ...: два параметра, второй для весовых коэффициентовПравильный ответ. Если вход чаще уже собран в коллекцию, лучше принимать один параметр-итерируемый, чем заставлять распаковывать в
*args.Разбор
Сигнатура def mean(values): ... позволяет передавать список, кортеж или любой другой итерируемый объект напрямую (например, mean(values)), без распаковки. Вариант def mean(*values): ... удобен, когда вызывают как mean(1, 2, 3), но хуже подходит для данных, которые уже собраны в коллекции — приходится писать mean(*values). Двойные звёздочки **values принимают только пары ключ-значение и для чисел не годятся. При проектировании функций для аналитики чаще выигрывает явный параметр values.
Проверь себя · 1/3разбор после ответа
Дана функция
def discount(total): if total >= 100: return 10; return 0. Что вернет вызов discount(120)?Ещё вопросы по теме «Функции и аргументы»
- Есть функция `def add(x, y): return x + y`. Что вернет вызов `add(2, 3)`?
- Дана функция `def f(a, b, c): return a * 100 + b * 10 + c`. Что вернёт вызов `f(1, c=3, b=2)`?
- Есть функция `def power(x, exp=2): return x ** exp`. Что вернёт вызов `power(3)`?
- Дана функция `def total(*args): return sum(args)`. Что вернёт вызов `total(1, 2, 3)`?
- Дан код: `x = 10` на верхнем уровне модуля и `def inc(): return x + 1`. Что вернёт вызов `inc()`?
- Все вопросы по «Функции и аргументы» →