Я видел этот SO-вопрос (это не дубликат): Python голая звездочка в аргументе функции
В python-3.x вы можете добавить аргумент функции *
в аргументы функции, это означает, что (цитата из docs):
Параметры после "*" или "* идентификатор" являются параметрами только для ключевого слова и могут передаваться только аргументы ключевого слова.
Итак, я определил функцию:
>>> def f(a, b, *, c=1, d=2, e=3):
... print('Hello, world!')
...
Я могу передавать значения c
, d
и e
только путем указания ключевых слов:
>>> f(1, 2, 10, 20, 30)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() takes 2 positional arguments but 5 were given
>>> f(1, 2, c=10, d=20, e=30)
Hello, world!
Вопросы:
- Какова мотивация такого типа ограничения/синтаксиса сахара?
- В каких случаях он распространяется?
- Действительно ли он используется в сторонних библиотеках, которые переключаются на python3?
Некоторые примеры "реального мира" очень помогли бы. Спасибо заранее.