Ich denke, Sie meinen "Schlüsselwort Argument", wenn Sie sagen "benannter Parameter". dict.pop()
akzeptiert kein Schlüsselwortargument, daher ist dieser Teil der Frage strittig.
>>> {}.pop('test', d=None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop() takes no keyword arguments
Das heißt, die Art und Weise, ob ein Argument vorgesehen nachzuweisen wurde, ist die *args
oder **kwargs
Syntax zu verwenden. Zum Beispiel:
def foo(first, *rest):
if len(rest) > 1:
raise TypeError("foo() expected at most 2 arguments, got %d"
% (len(rest) + 1))
print 'first =', first
if rest:
print 'second =', rest[0]
Mit etwas Arbeit und die Verwendung der **kwargs
Syntax auch ist es möglich, die Python-Aufrufkonvention vollständig zu emulieren, wo Argumente können entweder nach Position oder nach Namen zur Verfügung gestellt werden, und Argumente mehrfach zur Verfügung gestellt (durch Position und Name) verursachen einen Fehler.
Dies ist nicht sinnvoll, wenn 'None' auch ein sinnvoller Wert für den Parameter ist. Beispiel ist 'dict.pop' und sein Verhalten, wenn der Schlüssel nicht gefunden wird - er gibt den zweiten Parameter zurück, wenn er vorhanden ist, oder er hebt ansonsten KeyError auf. – Kos
In diesem Fall könnten Sie eine Closure-Variable mit einem Objekt erstellen. 'MISSING = object(); def foo (arg = VERMISST): wenn arg fehlt: ... ' –