Замечали, что в функцию
print() можно передать сколько угодно значений?print(1, "a", [1,2], True) - и она не ломается!Как сделать такую же всеядную функцию самому? Нам понадобятся операторы распаковки:
* и **.📦 1.
*args (Позиционные аргументы)Если поставить одну звездочку перед именем аргумента (обычно называют
args), Python соберет все переданные значения в кортеж (tuple).
def sum_all(*args):
# args превратится в (1, 2, 3, 4, 5)
print(f"Тип: {type(args)}")
return sum(args)
print(sum_all(1, 2, 3, 4, 5))
# Вывод: 15
Теперь ваша функция может принимать хоть 0, хоть 100 чисел!
🗝️ 2.
**kwargs (Именованные аргументы)Две звездочки (обычно
kwargs - keyword arguments) собирают всё в словарь (dict). Это идеально для настроек или сложных объектов.
def create_profile(**kwargs):
# kwargs превратится в {'name': 'Alex', 'age': 25}
for key, value in kwargs.items():
print(f"{key}: {value}")
create_profile(name="Alex", age=25, city="Minsk")
🔄 Обратная магия: Распаковка
Звездочки работают и "на выход"! Если у вас есть список, и вы хотите передать его содержимое как отдельные аргументы:
numbers = [1, 2, 3]
# Вместо print(numbers[0], numbers[1], numbers[2])
# Пишем просто:
print(*numbers)
# Вывод: 1 2 3
⚠️ Важно: Порядок в определении функции строгий!
1. Обычные аргументы (
a, b)2.
*args3.
**kwargsИспользуйте это, чтобы писать гибкий код, который не нужно переписывать при каждом новом параметре! 😉
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff