Eine Identitätsfunktion, wie sie in https://en.wikipedia.org/wiki/Identity_function definiert ist , nimmt ein einzelnes Argument und gibt es unverändert zurück:
def identity(x):
return x
Was Sie verlangen, wenn Sie sagen, dass Sie die Signatur möchten, def identity(*args)ist keine reine Identitätsfunktion, da Sie möchten, dass mehrere Argumente verwendet werden. Das ist in Ordnung, aber dann stoßen Sie auf ein Problem, da Python-Funktionen nicht mehrere Ergebnisse zurückgeben. Sie müssen also einen Weg finden, alle diese Argumente in einen Rückgabewert zu packen.
Die übliche Methode zum Zurückgeben von "mehreren Werten" in Python besteht darin, ein Tupel der Werte zurückzugeben - technisch gesehen ist dies ein Rückgabewert, der jedoch in den meisten Kontexten verwendet werden kann, als wären es mehrere Werte. Aber das hier zu tun bedeutet, dass Sie bekommen
>>> def mv_identity(*args):
... return args
...
>>> mv_identity(1,2,3)
(1, 2, 3)
>>> # So far, so good. But what happens now with single arguments?
>>> mv_identity(1)
(1,)
Und die schnelle Behebung dieses Problems führt zu anderen Problemen, wie die verschiedenen Antworten hier gezeigt haben.
Zusammenfassend ist in Python keine Identitätsfunktion definiert, weil:
- Die formale Definition (eine einzelne Argumentfunktion) ist nicht so nützlich und trivial zu schreiben.
- Das Erweitern der Definition auf mehrere Argumente ist im Allgemeinen nicht genau definiert, und Sie sollten Ihre eigene Version besser definieren, die so funktioniert, wie Sie es für Ihre spezielle Situation benötigen.
Für Ihren genauen Fall,
def dummy_gettext(message):
return message
ist mit ziemlicher Sicherheit das, was Sie wollen - eine Funktion, die dieselbe Aufrufkonvention und Rückgabe wie hat gettext.gettext, die ihr Argument unverändert zurückgibt und eindeutig benannt ist, um zu beschreiben, was sie tut und wo sie verwendet werden soll. Ich wäre ziemlich schockiert, wenn die Leistung hier eine entscheidende Rolle spielen würde.
map and filter use None for the identity?