Функции. Переменное количество аргументов
Функции с переменным количеством аргументов
Какое значение выведет на экран следующий код?:
def f(n=3): return n + 7 print(f(f(f())))
Ответ: 24
Какое количество аргументов может принять следующая функция?:
def func(x, y, *args):
Ответ: два и больше
Какое значение выведет на экран следующий код?:
def func(x, y, *args): return len(args) print(func(10, 20, 30, 40, 50, 60))
Ответ: 4
Какое значение выведет на экран следующий код?:
def func(*args): return max(args) + min(args) print(func(10, 15, *[31, 42, 5, 1], *(17, 28, 19, 100), 13, 12))
Ответ: 101
Как следует именовать в определении функции параметр, призванный получать при вызове все позиционные аргументы?
Ответ: *args
Как следует именовать в определении функции параметр, призванный получать при вызове все именованные аргументы?
Ответ: **kwargs
Выберите правильное объявление функции func(), чтобы можно было успешно выполнить следующие вызовы функции:
func(5, 6, 13, 17, 56) func(2, 7)
Ответ: def funс(*args)
Каков правильный порядок использования аргументов *args, **kwargs и позиционных аргументов fargs в заголовке функции func?
Ответ: func(fargs, *args, **kwargs)
Напишите функцию count_args(), которая принимает произвольное количество аргументов и возвращает количество переданных в нее аргументов.
def count_args(*args): return len(args)
Напишите функцию sq_sum(), которая принимает произвольное количество числовых аргументов и возвращает сумму их квадратов.
def sq_sum(*args): return sum(n ** 2 for n in args)
Напишите функцию mean(), которая принимает произвольное количество аргументов и возвращает среднее арифметическое переданных в нее числовых (int или float) аргументов.
def mean(*args): s = [i for i in args if type(i) in [int, float]] return (float(0) if len(s) == 0 else float(sum(s)/len(s)))
Напишите функцию greet(), которая принимает произвольное количество аргументов строк имен (как минимум одно) и возвращает приветствие.
def greet(name, *args): rez = ' and '.join((name,) + args) return f'Hello, {rez}!'
Напишите функцию print_products(), которая принимает произвольное количество аргументов и выводит список продуктов (любая непустая строка) по образцу: <номер продукта>) <название продукта> (нумерация продуктов начинается с единицы). Если среди переданных аргументов нет ни одного продукта, необходимо вывести текст Нет продуктов.
def print_products(*args): s = [prod for prod in args if prod and isinstance(prod, str)] if s: for ind, prod in enumerate(s, 1): print(f"{ind}) {prod}") else: print("Нет продуктов")
Напишите функцию info_kwargs(), которая принимает произвольное количество именованных аргументов и печатает именованные аргументы в соответствии с образцом: <имя аргумента>: <значение аргумента>, при этом имена аргументов следуют в алфавитном порядке (по возрастанию).
def info_kwargs(**kwargs): for key, value in sorted(kwargs.items()): print(key + ": " + str(value))