/ и * в определнии функции Видели когда-нибудь вот такой синт | PYTHON 🐍 DEPTH
/ и * в определнии функции
Видели когда-нибудь вот такой синтаксис?
def foo(first, /, second, *, third):
print(first, second, third)
Выглядит странно?
На самом деле / и * навязывают положение ключевых и позиционных аргументов.
Попытаемся, например, вызвать foo() с неправильным набором параметров:
>>> foo("bar", "qux")
...
TypeError: foo() missing 1 required keyword-only argument: 'third'
Нужен keyword аргумент, окей, попробуем еще раз:
>>> foo("bar", third="qux")
...
TypeError: foo() missing 1 required positional argument: 'second'
Снова нет. Укажем все параметры:
>>> foo("bar", "baz", third="qux")
bar baz qux
Получилось!
Оба символа опциональны. И, в моем опыте, если ставят, то обычно только звездочку.
Источник: https://docs.python.org/3/tutorial/controlflow.html#special-parameters