Какие типы аргументов есть в Python?
1. Позиционные аргументы (Positional arguments)
Передаются функции по порядку, и их значение определяется порядком вызова.
def func(a, b):
return a + b
func(1, 2) # a=1, b=2
2. Именованные аргументы (Keyword arguments)
Передаются явно с указанием имени параметра. Порядок не важен.
func(b=2, a=1) # a=1, b=2
3. Аргументы по умолчанию (Default arguments)
Параметры с заданным значением по умолчанию, если аргумент не передан.
def func(a, b=5):
return a + b
func(3) # b=5 по умолчанию, результат 8
func(3, 7) # b=7, результат 10
4. *Переменное число позиционных аргументов (args)
Позволяет передать произвольное число позиционных аргументов, которые внутри функции собираются в кортеж.
def func(*args):
return sum(args)
func(1, 2, 3, 4) # args = (1, 2, 3, 4), результат 10
5. **Переменное число именованных аргументов (kwargs)
Позволяет передать произвольное число именованных аргументов, которые внутри функции собираются в словарь.
def func(**kwargs):
return kwargs
func(a=1, b=2) # kwargs = {'a':1, 'b':2}
6. Позиционные только аргументы (Python 3.8+)
Аргументы, которые можно передать только позиционно — указаны через /
в объявлении.
def func(a, b, /, c, d):
pass
func(1, 2, c=3, d=4) # a и b — только позиционно
7. Именованные только аргументы (Python 3.8+)
Аргументы, которые можно передать только по имени — указаны через *
в объявлении.
def func(a, b, *, c, d):
pass
func(1, 2, c=3, d=4) # c и d — только именованные
Итог
Позиционные: передаются по порядку.
Именованные: передаются по имени.
По умолчанию: имеют значение по умолчанию.
*args: кортеж произвольных позиционных аргументов.
**kwargs: словарь произвольных именованных аргументов.
/ и * для позиционных и именованных только аргументов (нововведение).
Last updated
Was this helpful?