Was ist der Zweck von Bare Asterix in Funktionsargumenten?

Ich habe diese SO-Frage gesehen (dies ist kein Duplikat):Python-Sternchen im Funktionsargument

In python-3.x können Sie einen Bare hinzufügen* Für die Funktionsargumente bedeutet dies, dass (quote fromdocs):

Parameter nach "*" oder "* identifier" sind Nur-Schlüsselwort-Parameter und dürfen nur mit Schlüsselwortargumenten übergeben werden.

Ok, also habe ich eine Funktion definiert:

>>> def f(a, b, *, c=1, d=2, e=3):
...     print('Hello, world!')
... 

Ich kann passierenc, d unde Variablenwerte nur durch Angabe von Schlüsselwörtern:

>>> 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!

Fragen sind:

Was ist die Motivation für diese Art von Restriktions- / Syntaxzucker?Welche Anwendungsfälle werden abgedeckt?Wird es wirklich in Bibliotheken von Drittanbietern verwendet, die auf python3 umgestellt haben?

Einige "reale" Beispiele würden viel helfen. Danke im Voraus.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage