Lewati ke konten utama

Fungsi Python: Cara Memanggil & Menulis Fungsi

Pelajari cara menulis fungsi Python yang dapat digunakan kembali dan efisien. Kuasai parameter, pernyataan return, dan topik lanjutan seperti fungsi lambda. Susun kode Anda lebih baik dengan main() dan praktik terbaik lainnya.
Diperbarui 18 Mei 2026  · 14 mnt baca
banner keterampilan python untuk membangun karier dengan datacamp

Fungsi adalah bagian penting dari bahasa pemrograman Python: Anda mungkin sudah pernah menjumpai dan menggunakan beberapa fungsi hebat yang tersedia bawaan di Python atau yang datang bersama ekosistem pustakanya. Namun, sebagai data scientist, Anda akan terus-menerus perlu menulis fungsi sendiri untuk memecahkan masalah yang diajukan data Anda.

Tutorial ini menggunakan sintaks Python 3. Semua contoh berjalan di Python 3.10+ dan telah diperbarui mengikuti konvensi modern (f-string, type hints, parameter hanya-posisional dan hanya-kata kunci). Rilis stabil saat ini adalah Python 3.14.

Untuk menjalankan sendiri semua kode contoh dalam tutorial ini dengan mudah, Anda bisa membuat workbook DataLab gratis yang sudah terpasang Python dan berisi semua contoh kode. Untuk latihan menulis fungsi Python, lihat latihan praktis DataCamp ini atau coba kursus Python Data Science Toolbox kami!

Fungsi dalam Python

Anda menggunakan fungsi dalam pemrograman untuk mengelompokkan serangkaian instruksi yang ingin digunakan berulang kali atau yang karena kompleksitasnya, lebih baik dibuat terpisah dalam sub-program dan dipanggil saat diperlukan. Artinya, fungsi adalah potongan kode yang ditulis untuk menjalankan tugas tertentu. Untuk menjalankan tugas spesifik tersebut, fungsi mungkin membutuhkan beberapa masukan atau tidak sama sekali. Ketika tugas selesai dijalankan, fungsi bisa mengembalikan satu atau lebih nilai, atau tidak mengembalikan apa pun.

Ada tiga jenis fungsi dalam Python:

  • Fungsi bawaan, seperti help() untuk meminta bantuan, min() untuk mendapatkan nilai minimum, print() untuk mencetak objek ke terminal,… Anda bisa menemukan ikhtisar lebih banyak fungsi seperti ini di sini.

  • User-Defined Functions (UDF), yaitu fungsi yang dibuat pengguna untuk membantu mereka; Dan

  • Fungsi anonim, yang juga disebut fungsi lambda karena tidak dideklarasikan dengan kata kunci standar def.

Fungsi vs. metode

Metode merujuk pada fungsi yang merupakan bagian dari sebuah kelas. Anda mengaksesnya dengan instance atau objek dari kelas tersebut. Fungsi tidak memiliki batasan ini: fungsi merujuk pada fungsi yang berdiri sendiri. Ini berarti semua metode adalah fungsi, tetapi tidak semua fungsi adalah metode.

Pertimbangkan contoh ini, di mana Anda terlebih dahulu mendefinisikan fungsi plus() lalu sebuah kelas Summation dengan metode sum():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGEgZnVuY3Rpb24gYHBsdXMoKWBcbmRlZiBwbHVzKGEsYik6XG4gIHJldHVybiBhICsgYlxuICBcbiMgQ3JlYXRlIGEgYFN1bW1hdGlvbmAgY2xhc3NcbmNsYXNzIFN1bW1hdGlvbihvYmplY3QpOlxuICBkZWYgc3VtKHNlbGYsIGEsIGIpOlxuICAgIHNlbGYuY29udGVudHMgPSBhICsgYlxuICAgIHJldHVybiBzZWxmLmNvbnRlbnRzICJ9

Jika sekarang Anda ingin memanggil metode sum() yang merupakan bagian dari kelas Summation, Anda terlebih dahulu perlu mendefinisikan sebuah instance atau objek dari kelas tersebut. Jadi, mari kita definisikan objek seperti itu:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIHBsdXMoYSxiKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuY2xhc3MgU3VtbWF0aW9uKG9iamVjdCk6XG4gIGRlZiBzdW0oc2VsZiwgYSwgYik6XG4gICAgc2VsZi5jb250ZW50cyA9IGEgKyBiXG4gICAgcmV0dXJuIHNlbGYuY29udGVudHMgIiwic2FtcGxlIjoiIyBJbnN0YW50aWF0ZSBgU3VtbWF0aW9uYCBjbGFzcyB0byBjYWxsIGBzdW0oKWBcbnN1bUluc3RhbmNlID0gU3VtbWF0aW9uKClcbnN1bUluc3RhbmNlLnN1bSgxLDIpIn0=

Ingat bahwa instansiasi ini tidak diperlukan saat Anda ingin memanggil fungsi plus()! Anda bisa menjalankan plus(1,2) di potongan kode DataCamp Light tanpa masalah!

Parameter vs. argumen

Parameter adalah nama yang digunakan saat mendefinisikan fungsi atau metode, dan tempat argumen akan dipetakan. Dengan kata lain, argumen adalah hal-hal yang diberikan ke setiap pemanggilan fungsi atau metode, sementara kode fungsi atau metode merujuk ke argumen tersebut dengan nama parameternya.

Pertimbangkan contoh berikut dan lihat kembali potongan DataCamp Light di atas: Anda meneruskan dua argumen ke metode sum() dari kelas Summation, meskipun sebelumnya Anda mendefinisikan tiga parameter, yaitu self, a dan b.

Apa yang terjadi dengan self?

Argumen pertama dari setiap metode kelas selalu merupakan referensi ke instance saat ini dari kelas tersebut, yang dalam hal ini adalah Summation. Secara konvensi, argumen ini disebut self.

Ini semua berarti bahwa Anda tidak meneruskan referensi ke self dalam kasus ini karena self adalah nama parameter untuk argumen yang diteruskan secara implisit yang merujuk ke instance melalui mana suatu metode dipanggil. Argumen ini disisipkan secara implisit ke dalam daftar argumen.

Cara Mendefinisikan Fungsi: User-Defined Functions (UDF)

Empat langkah untuk mendefinisikan fungsi di Python adalah sebagai berikut:

  1. Gunakan kata kunci def untuk mendeklarasikan fungsi dan ikuti dengan nama fungsi.

  2. Tambahkan parameter ke fungsi: parameter harus berada di dalam tanda kurung fungsi. Akhiri baris dengan titik dua.

  3. Tambahkan pernyataan yang harus dijalankan fungsi.

  4. Akhiri fungsi Anda dengan pernyataan return jika fungsi perlu menghasilkan sesuatu. Tanpa pernyataan return, fungsi Anda akan mengembalikan objek None.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4gIn0=

Tentu saja, fungsi Anda akan menjadi lebih kompleks seiring waktu: Anda bisa menambahkan for loop, kontrol alur, … dan lainnya agar lebih terperinci:

def hello():
    name = input("Enter your name: ")
    if name:
        print(f"Hello {name}")
    else:
        print("Hello World")

hello()

Pada fungsi di atas, Anda meminta pengguna memberikan nama. Jika tidak ada nama yang diberikan, fungsi akan mencetak “Hello World”. Jika ada, pengguna akan mendapatkan respons “Hello” yang dipersonalisasi.

Ingat juga bahwa Anda dapat mendefinisikan satu atau lebih parameter fungsi untuk UDF Anda. Anda akan mempelajari lebih lanjut tentang ini saat membahas bagian Argumen Fungsi. Selain itu, Anda bisa mengembalikan satu atau beberapa nilai, atau tidak sama sekali, sebagai hasil fungsi Anda.

Pernyataan return

Perhatikan bahwa karena Anda mencetak sesuatu di UDF hello(), Anda sebenarnya tidak perlu mengembalikannya. Tidak akan ada perbedaan antara fungsi di atas dan yang ini:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsb19ub3JldHVybigpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpICJ9

Namun, jika Anda ingin terus bekerja dengan hasil fungsi Anda dan mencoba beberapa operasi pada hasil tersebut, Anda perlu menggunakan pernyataan return untuk benar-benar mengembalikan nilai, seperti String, integer, …. Pertimbangkan skenario berikut, di mana hello() mengembalikan String "hello", sementara fungsi hello_noreturn() mengembalikan None:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4oXCJoZWxsb1wiKVxuXG5kZWYgaGVsbG9fbm9yZXR1cm4oKTpcbiAgcHJpbnQoXCJIZWxsbyBXb3JsZFwiKVxuICBcbiMgTXVsdGlwbHkgdGhlIG91dHB1dCBvZiBgaGVsbG8oKWAgd2l0aCAyIFxuaGVsbG8oKSAqIDJcblxuIyAoVHJ5IHRvKSBtdWx0aXBseSB0aGUgb3V0cHV0IG9mIGBoZWxsb19ub3JldHVybigpYCB3aXRoIDIgXG5oZWxsb19ub3JldHVybigpICogMiJ9

Fungsi kedua memberi Anda error karena Anda tidak dapat melakukan operasi apa pun dengan None. Anda akan mendapatkan TypeError yang menyatakan bahwa Anda tidak dapat melakukan operasi perkalian untuk NoneType (None yang merupakan hasil dari hello_noreturn()) dan int (2).

Tip fungsi akan langsung keluar ketika menemui pernyataan return, meskipun itu berarti fungsi tidak mengembalikan nilai apa pun:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBydW4oKTpcbiAgZm9yIHggaW4gcmFuZ2UoMTApOlxuICAgICBpZiB4ID09IDI6XG4gICAgICAgcmV0dXJuXG4gIHByaW50KFwiUnVuIVwiKVxuICBcbnJ1bigpIn0=

Hal lain yang layak disebutkan saat Anda bekerja dengan pernyataan return adalah fakta bahwa Anda dapat menggunakannya untuk mengembalikan beberapa nilai. Untuk melakukan ini, Anda memanfaatkan tuple.

Ingat bahwa struktur data ini sangat mirip dengan list: ia dapat berisi banyak nilai. Namun, tuple bersifat immutable, yang berarti Anda tidak dapat memodifikasi elemen yang tersimpan di dalamnya! Anda membangunnya dengan bantuan tanda kurung ganda (). Anda dapat membongkar tuple ke beberapa variabel dengan bantuan koma dan operator penugasan.

Lihat contoh berikut untuk memahami bagaimana fungsi Anda dapat mengembalikan beberapa nilai:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgXG5kZWYgcGx1cyhhLGIpOlxuICBzdW0gPSBhICsgYlxuICByZXR1cm4gKHN1bSwgYSlcblxuIyBDYWxsIGBwbHVzKClgIGFuZCB1bnBhY2sgdmFyaWFibGVzIFxuc3VtLCBhID0gcGx1cygzLDQpXG5cbiMgUHJpbnQgYHN1bSgpYFxucHJpbnQoc3VtKSJ9

Catatan bahwa pernyataan return return sum, a akan memiliki hasil yang sama dengan return (sum, a): yang pertama sebenarnya mengemas sum dan a ke dalam sebuah tuple di balik layar!

Cara memanggil fungsi

Pada bagian sebelumnya, Anda sudah melihat banyak contoh cara memanggil fungsi. Memanggil fungsi berarti mengeksekusi fungsi yang telah Anda definisikan—baik langsung dari prompt Python atau melalui fungsi lain (seperti yang akan Anda lihat pada bagian “Fungsi Bersarang”).

Panggil fungsi hello() yang baru Anda definisikan dengan cukup mengeksekusi hello(), seperti pada potongan DataCamp Light di bawah ini:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiJoZWxsbygpIn0=

Cara menambahkan docstring ke fungsi Python

Aspek penting lainnya dari menulis fungsi di Python: docstring. Docstring menjelaskan apa yang dilakukan fungsi Anda, seperti komputasi yang dijalankan atau nilai yang dikembalikannya. Deskripsi ini berfungsi sebagai dokumentasi untuk fungsi Anda sehingga siapa pun yang membaca docstring fungsi Anda memahami apa yang dilakukan fungsi tersebut, tanpa harus menelusuri semua kode dalam definisi fungsi.

Docstring fungsi ditempatkan pada baris segera setelah header fungsi dan diapit oleh tanda kutip tiga. Docstring yang sesuai untuk fungsi hello() Anda adalah ‘Mencetak “Hello World”’.

def hello() -> None:
    """Prints "Hello World"."""
    print("Hello World")

Catatan bahwa docstring bisa lebih panjang daripada contoh yang diberikan di sini. Jika Anda ingin mempelajari docstring lebih detail, sebaiknya lihat beberapa repositori Github pustaka Python seperti scikit-learn atau pandas, di mana Anda akan menemukan banyak contoh!

Type hints

Sangat berkaitan dengan docstring — dan hampir sama umum dalam kode Python modern — adalah type hints. Sejak Python 3.5, Anda dapat memberi anotasi pada parameter fungsi dan nilai kembalian dengan tipe yang diharapkan. Berikut contoh paling sederhana:

def plus(a: int, b: int) -> int:
    return a + b

Teks : int setelah setiap parameter berarti “ini seharusnya integer,” dan -> int setelah tanda kurung berarti “fungsi ini mengembalikan integer.” Python sendiri tidak menegakkan anotasi ini saat runtime — Anda tetap bisa mengoper string ke plus() dan Python tidak akan mengeluh sampai sesuatu bermasalah. Namun, alat seperti mypy, pyright, dan pemeriksa tipe bawaan editor seperti VS Code dan PyCharm menggunakan hint ini untuk menangkap bug sebelum Anda menjalankan kode.

Untuk tipe yang lebih kompleks, Anda dapat menggunakan generic bawaan secara langsung (Python 3.9+) atau impor dari modul typing:

def greet(names: list[str]) -> None:
    for name in names:
        print(f"Hello {name}")

def find_user(user_id: int) -> dict | None:
    # returns the user dict, or None if not found
    ...
Type hints bersifat opsional, tetapi dianggap praktik terbaik untuk fungsi apa pun yang Anda rencanakan untuk digunakan kembali, dibagikan, atau dikunjungi lagi enam bulan mendatang. Type hints berfungsi sebagai dokumentasi yang dapat diperiksa mesin — IDE Anda akan melakukan pelengkapan otomatis berdasarkan itu, menangkap salah ketik, dan memperingatkan saat Anda mengoper tipe yang salah.

Argumen fungsi dalam Python

Sebelumnya, Anda mempelajari perbedaan antara parameter dan argumen. Singkatnya, argumen adalah hal-hal yang diberikan ke pemanggilan fungsi atau metode, sementara kode fungsi atau metode merujuk ke argumen tersebut dengan nama parameternya. Ada empat jenis argumen yang dapat diterima UDF Python:

  • Argumen default
  • Argumen wajib
  • Argumen kata kunci
  • Jumlah argumen variabel

Argumen Default

Argumen default adalah argumen yang mengambil nilai bawaan jika tidak ada nilai argumen yang diteruskan saat pemanggilan fungsi. Anda dapat menetapkan nilai default ini dengan operator penugasan =, seperti pada contoh berikut:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIgPSAyKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuIyBDYWxsIGBwbHVzKClgIHdpdGggb25seSBgYWAgcGFyYW1ldGVyXG5wbHVzKGE9MSlcblxuIyBDYWxsIGBwbHVzKClgIHdpdGggYGFgIGFuZCBgYmAgcGFyYW1ldGVyc1xucGx1cyhhPTEsIGI9MykifQ==

Argumen Wajib

Sesuai namanya, argumen wajib dari UDF adalah argumen yang harus ada. Argumen ini perlu diteruskan saat pemanggilan fungsi dan dalam urutan yang tepat, seperti pada contoh berikut:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGIifQ==

Anda membutuhkan argumen yang dipetakan ke parameter a maupun b untuk memanggil fungsi tanpa error. Jika Anda menukar a dan b, hasilnya tidak akan berbeda, tetapi bisa berbeda jika Anda mengubah plus() menjadi berikut ini:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYS9iIn0=

Argumen Kata Kunci

Jika Anda ingin memastikan bahwa Anda memanggil semua parameter dalam urutan yang benar, Anda dapat menggunakan argumen kata kunci dalam pemanggilan fungsi. Anda menggunakannya untuk mengidentifikasi argumen berdasarkan nama parameternya. Mari ambil contoh di atas untuk memperjelas:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIFxucGx1cygyLDMpXG5cbiMgQ2FsbCBgcGx1cygpYCBmdW5jdGlvbiB3aXRoIGtleXdvcmQgYXJndW1lbnRzXG5wbHVzKGE9MSwgYj0yKSJ9

Perhatikan bahwa dengan menggunakan argumen kata kunci, Anda juga dapat menukar urutan parameter dan tetap mendapatkan hasil yang sama saat mengeksekusi fungsi Anda:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3VtZW50c1xucGx1cyhiPTIsIGE9MSkifQ==

Jumlah Argumen Variabel

Dalam kasus ketika Anda tidak mengetahui jumlah argumen yang tepat yang ingin Anda teruskan ke suatu fungsi, Anda dapat menggunakan sintaks berikut dengan *args:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgcmV0dXJuIHN1bShhcmdzKVxuXG4jIENhbGN1bGF0ZSB0aGUgc3VtXG5wbHVzKDEsNCw1KSJ9

Tanda bintang (*) diletakkan sebelum nama variabel yang menampung nilai semua argumen variabel non-kata kunci. Perhatikan di sini bahwa Anda juga bisa saja meneruskan *varint, *var_int_args atau nama lain apa pun ke fungsi plus().

Tip: coba ganti *args dengan nama lain yang menyertakan tanda bintang. Anda akan melihat kode di atas tetap bekerja!

Anda melihat bahwa fungsi di atas menggunakan fungsi bawaan Python sum() untuk menjumlahkan semua argumen yang diteruskan ke plus().

Variabel global vs. lokal

Pada umumnya, variabel yang didefinisikan di dalam badan fungsi memiliki cakupan lokal, dan yang didefinisikan di luar memiliki cakupan global. Artinya, variabel lokal didefinisikan dalam blok fungsi dan hanya dapat diakses di dalam fungsi tersebut, sementara variabel global dapat diakses oleh semua fungsi yang mungkin ada di skrip Anda:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgR2xvYmFsIHZhcmlhYmxlIGBpbml0YFxuaW5pdCA9IDFcblxuIyBEZWZpbmUgYHBsdXMoKWAgZnVuY3Rpb24gdG8gYWNjZXB0IGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50c1xuZGVmIHBsdXMoKmFyZ3MpOlxuICAjIExvY2FsIHZhcmlhYmxlIGBzdW0oKWBcbiAgdG90YWwgPSAwXG4gIGZvciBpIG4gYXJnczpcbiAgICB0b3RhbCArPSBpXG4gIHJldHVybiB0b3RhbFxuICBcbiMgQWNjZXNzIHRoZSBnbG9iYWwgdmFyaWFibGVcbnByaW50KFwidGhpcyBpcyB0aGUgaW5pdGlhbGl6ZWQgdmFsdWUgXCIgKyBzdHIoaW5pdCkpXG5cbiMgKFRyeSB0bykgYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZVxucHJpbnQoXCJ0aGlzIGlzIHRoZSBzdW0gXCIgKyBzdHIodG90YWwpKSJ9

Anda akan melihat bahwa Anda akan mendapatkan NameError yang menyatakan bahwa name 'total' is not defined ketika Anda mencoba mencetak variabel lokal total yang didefinisikan di dalam badan fungsi. Variabel init, di sisi lain, dapat dicetak tanpa masalah.

Parameter hanya-posisional dan hanya-kata kunci

Sejak Python 3.8, Anda dapat mengambil lebih banyak kendali atas bagaimana argumen harus diteruskan dengan menggunakan dua penanda khusus dalam tanda tangan fungsi Anda: / dan *. Apa pun sebelum / hanya dapat diteruskan secara posisional; apa pun setelah * hanya dapat diteruskan dengan kata kunci.

def greet(name, /, greeting="Hello", *, punctuation="!"):
    print(f"{greeting} {name}{punctuation}")

 Berikut cara penerapannya saat pemanggilan:

greet("Alice")                          # works
greet("Alice", greeting="Hi")           # works
greet("Alice", "Hi", punctuation="?")   # works

greet(name="Alice")                     # TypeError: name is positional-only
greet("Alice", "Hi", "?")               # TypeError: punctuation is keyword-only

Mengapa Anda menginginkan ini? Dua alasan utama.

Pertama, parameter hanya-posisional memungkinkan Anda mengganti namanya di kemudian hari tanpa merusak kode siapa pun — karena tidak ada yang diizinkan menggunakan nama parameter sebagai kata kunci, Anda bebas mengubahnya.

Kedua, parameter hanya-kata kunci memaksa pemanggil untuk eksplisit tentang apa yang mereka teruskan, yang membuat pemanggilan lebih mudah dibaca ketika Anda memiliki beberapa flag atau pengaturan opsional.

Singkatnya, ini adalah cara yang rapi untuk menegakkan maksud.

Fungsi Anonim dalam Python

Fungsi anonim juga disebut fungsi lambda dalam Python karena alih-alih mendeklarasikannya dengan kata kunci standar def, Anda menggunakan kata kunci lambda.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRvdWJsZSA9IGxhbWJkYSB4OiB4KjJcblxuZG91YmxlKDUpIn0=

Pada potongan DataCamp Light di atas, lambda x: x*2 adalah fungsi anonim atau lambda. x adalah argumen, dan x*2 adalah ekspresi atau instruksi yang dievaluasi dan dikembalikan. Yang istimewa dari fungsi ini adalah tidak memiliki nama, tidak seperti contoh yang Anda lihat di bagian pertama tutorial fungsi ini. Jika Anda harus menulis fungsi di atas dalam UDF, hasilnya akan seperti berikut:

def double(x):
  return x*2

Mari pertimbangkan contoh lain dari fungsi lambda di mana Anda bekerja dengan dua argumen:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgYHN1bSgpYCBsYW1iZGEgZnVuY3Rpb25cbnN1bSA9IGxhbWJkYSB4LCB5OiB4ICsgeTtcblxuIyBDYWxsIHRoZSBgc3VtKClgIGFub255bW91cyBmdW5jdGlvblxuc3VtKDQsNSlcblxuIyBcIlRyYW5zbGF0ZVwiIHRvIGEgVURGXG5kZWYgc3VtKHgsIHkpOlxuICByZXR1cm4geCt5In0=

Anda menggunakan fungsi anonim ketika Anda memerlukan fungsi tanpa nama untuk periode singkat, dan dibuat saat runtime. Konteks spesifik di mana ini relevan adalah ketika Anda bekerja dengan filter(), map() dan reduce():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2VcblxubXlfbGlzdCA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMF1cblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYGZpbHRlcigpYFxuZmlsdGVyZWRfbGlzdCA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiAoeCoyID4gMTApLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYG1hcCgpYFxubWFwcGVkX2xpc3QgPSBsaXN0KG1hcChsYW1iZGEgeDogeCoyLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYHJlZHVjZSgpYFxucmVkdWNlZF9saXN0ID0gcmVkdWNlKGxhbWJkYSB4LCB5OiB4K3ksIG15X2xpc3QpXG5cbnByaW50KGZpbHRlcmVkX2xpc3QpXG5wcmludChtYXBwZWRfbGlzdClcbnByaW50KHJlZHVjZWRfbGlzdCkifQ==

Fungsi filter() menyaring, seperti namanya, list masukan asli my_list berdasarkan kriteria >10. Dengan map(), di sisi lain, Anda menerapkan fungsi ke semua item list my_list. Dalam kasus ini, Anda mengalikan semua elemen dengan 2.

Perhatikan bahwa fungsi reduce() merupakan bagian dari pustaka functools. Anda menggunakan fungsi ini secara kumulatif pada item-item list my_list, dari kiri ke kanan dan mereduksi urutan menjadi satu nilai, 55, dalam hal ini.

Menggunakan main() sebagai Fungsi di Python

Jika Anda memiliki pengalaman dengan bahasa pemrograman lain seperti Java, Anda akan tahu bahwa fungsi main diperlukan untuk mengeksekusi fungsi. Seperti yang telah Anda lihat pada contoh di atas, ini tidak selalu diperlukan untuk Python. Namun, menyertakan fungsi main() dalam program Python Anda bisa berguna untuk menyusun kode secara logis — semua komponen terpenting berada dalam fungsi main() ini.

Anda dapat dengan mudah mendefinisikan fungsi main() dan memanggilnya seperti yang telah Anda lakukan dengan semua fungsi lainnya di atas:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG5cbm1haW4oKSJ9

Namun, seperti saat ini, kode fungsi main() Anda akan dipanggil ketika Anda mengimpornya sebagai modul. Untuk memastikan itu tidak terjadi, Anda memanggil fungsi main() ketika __name__ == '__main__'.

Itu berarti kode pada potongan kode di atas menjadi:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG4gIFxuIyBFeGVjdXRlIGBtYWluKClgIGZ1bmN0aW9uIFxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkifQ==

Catatan bahwa selain fungsi __main__, Anda juga memiliki fungsi __init__ yang menginisialisasi instance dari sebuah kelas atau objek. Sederhananya, ini bertindak sebagai konstruktor atau inisialisator dan dipanggil secara otomatis ketika Anda membuat instance baru dari sebuah kelas. Dengan fungsi itu, objek yang baru dibuat ditetapkan ke parameter self, yang telah Anda lihat sebelumnya dalam tutorial ini. Lihat contoh berikut:

class Dog:
    """A simple Dog class.

    Args:
        legs: Number of legs so that the dog can walk.
        color: The color of the fur.
    """

    def __init__(self, legs: int, color: str) -> None:
        self.legs = legs
        self.color = color

    def bark(self) -> str:
        return "bark" * 2

if __name__ == "__main__":
    dog = Dog(4, "brown")
    print(dog.bark())

Terus Berlatih Fungsi Python

Selamat! Anda telah melalui tutorial singkat tentang fungsi di Python. Jika Anda ingin meninjau materi dasar pemrograman Python lainnya, jangan lewatkan Data Types for Data Science, kursus di mana Anda akan mengonsolidasikan dan melatih pengetahuan tentang list, dictionary, tuple, set, dan date time.

Pertanyaan yang Sering Diajukan tentang Fungsi Python

Apa itu fungsi dalam Python?

Fungsi adalah blok kode yang dapat digunakan kembali untuk menjalankan tugas tertentu. Fungsi dapat menerima masukan, memprosesnya, dan mengembalikan keluaran.

Bagaimana cara mendefinisikan fungsi di Python?

Untuk mendefinisikan fungsi di Python, gunakan kata kunci def, beri nama fungsi Anda, tambahkan parameter opsional dalam tanda kurung, tulis kode Anda, dan opsional return sebuah nilai.

Apa perbedaan antara fungsi dan metode dalam Python?

Fungsi berdiri sendiri, sedangkan metode milik kelas. Semua metode adalah fungsi, tetapi tidak semua fungsi adalah metode.

Apa saja jenis fungsi dalam Python?

Python memiliki fungsi bawaan (seperti print()), fungsi yang didefinisikan pengguna (kreasi kustom Anda), dan fungsi anonim (lambda satu baris yang berumur pendek).

Apa perbedaan antara parameter dan argumen?

Parameter adalah placeholder dalam definisi fungsi Anda, dan argumen adalah nilai aktual yang Anda berikan saat memanggil fungsi.

Apa itu fungsi lambda?

Fungsi lambda adalah fungsi tanpa nama satu baris untuk tugas-tugas cepat.

Mengapa menggunakan fungsi __main__?

Fungsi __main__ menjaga kode Anda tetap terorganisasi dan memastikan bagian tertentu hanya berjalan saat skrip dieksekusi langsung, bukan saat diimpor.

Apa perbedaan antara variabel global dan lokal?

Variabel global bekerja di mana saja, sedangkan variabel lokal hanya hidup di dalam fungsinya.

Topik

Pelajari lebih lanjut tentang Python

Kursus

Pengantar Python

4 Hr
6.8M
Kuasai dasar-dasar analisis data dengan Python dalam 4 jam. Kursus online ini memperkenalkan antarmuka Python dan pustaka populer.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

12 mnt

Lihat Lebih BanyakLihat Lebih Banyak