Функція ідентичності, визначена в https://en.wikipedia.org/wiki/Identity_function , приймає один аргумент і повертає його без змін:
def identity(x):
return x
Те, що ви запитуєте, коли ви говорите, що хочете підпису, def identity(*args)- це не суто функція ідентичності, оскільки ви хочете, щоб вона взяла кілька аргументів. Це добре, але тоді ви стикаєтеся з проблемою, оскільки функції Python не повертають декількох результатів, тому вам доведеться знайти спосіб закріплення всіх цих аргументів в одному поверненому значенні.
Звичайний спосіб повернення "декількох значень" в Python - це повернення кортежу значень - технічно це одне повернене значення, але воно може використовуватися в більшості контекстів так, як якщо б це було декілька значень. Але робити це тут означає, що ти отримаєш
>>> 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,)
І вирішення цієї проблеми швидко викликає інші питання, як показали різні відповіді.
Отже, підсумовуючи, в Python не визначена функція ідентичності, оскільки:
- Формальне визначення (функція єдиного аргументу) не є таким корисним, і писати тривіально.
- Розширення визначення на декілька аргументів загалом недостатньо визначено, і вам набагато краще визначити власну версію, яка працює так, як вам потрібно для вашої конкретної ситуації.
Для вашого точного випадку,
def dummy_gettext(message):
return message
майже напевно, що ви хочете - функція, яка має таку саму умову виклику та повернення gettext.gettext, що повертає аргумент незмінним і чітко названа для опису того, що він робить, і де він призначений для використання. Я був би дуже шокований, якби тут вирішальне врахування було.
map and filter use None for the identity?