Fungsi identitas, sebagaimana didefinisikan dalam https://en.wikipedia.org/wiki/Identity_function , mengambil satu argumen dan mengembalikannya tidak berubah:
def identity(x):
return x
Apa yang Anda minta ketika Anda mengatakan Anda ingin tanda tangan def identity(*args)itu bukan semata-mata fungsi identitas, karena Anda ingin mengambil beberapa argumen. Itu bagus, tapi kemudian Anda menemukan masalah karena fungsi Python tidak mengembalikan banyak hasil, jadi Anda harus menemukan cara untuk menjejalkan semua argumen itu menjadi satu nilai balik.
Cara biasa mengembalikan "nilai ganda" dengan Python adalah dengan mengembalikan tupel nilai - secara teknis itu adalah satu nilai balik tetapi dapat digunakan dalam sebagian besar konteks seolah-olah nilai ganda. Tetapi melakukan itu di sini berarti Anda mendapatkannya
>>> 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,)
Dan memperbaiki yang masalah cepat memberikan isu-isu lain, seperti berbagai jawaban di sini telah menunjukkan.
Jadi, secara ringkas, tidak ada fungsi identitas yang didefinisikan dalam Python karena:
- Definisi formal (fungsi argumen tunggal) tidak begitu berguna, dan sepele untuk ditulis.
- Memperluas definisi ke beberapa argumen tidak secara umum didefinisikan dengan baik, dan Anda jauh lebih baik mendefinisikan versi Anda sendiri yang berfungsi seperti yang Anda inginkan untuk situasi khusus Anda.
Untuk kasus Anda yang tepat,
def dummy_gettext(message):
return message
hampir pasti apa yang Anda inginkan - fungsi yang memiliki konvensi pemanggilan dan pengembalian yang sama dengan gettext.gettext, yang mengembalikan argumennya tidak berubah, dan secara jelas dinamai untuk menggambarkan apa yang dilakukannya dan di mana ia dimaksudkan untuk digunakan. Saya akan sangat terkejut jika kinerja menjadi pertimbangan penting di sini.
map and filter use None for the identity?