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.