Function yang sama-sama tidak menerima input hanya bisa menghasilkan hasil yang persis identik setiap kali dipanggil. Agar berguna, function perlu menerima nilai dari luar — nama siapa yang disapa, harga berapa yang dihitung, angka apa yang dibagi. Di titik ini muncul dua istilah yang sering tertukar bahkan oleh programmer berpengalaman: parameter dan argument. Chapter ini meluruskan keduanya sekaligus membahas aturan pencocokan nilai saat sebuah function dipanggil.
Parameter di Definisi, Argument di Pemanggilan #
Kedua istilah ini merujuk pada hal yang sama di posisi yang berbeda:
| Istilah | Muncul di | Sifat | Contoh |
|---|---|---|---|
| Parameter | baris def saat mendefinisikan | nama penampung | nama, kota |
| Argument | baris pemanggilan, di dalam (...) | nilai nyata | "Budi", "Bandung" |
Cara membedakannya mudah: parameter adalah nama yang ditulis saat function dibuat; argument adalah nilai yang dikirim saat function dipanggil. Mari kita lihat keduanya dalam satu program:
def perkenalan(nama, kota):
print(f"Nama saya {nama}, tinggal di {kota}.")
perkenalan("Budi", "Bandung")
perkenalan("Siti", "Denpasar")
perkenalan("Rina", "Yogyakarta")Output yang Dihasilkan:
Nama saya Budi, tinggal di Bandung.
Nama saya Siti, tinggal di Denpasar.
Nama saya Rina, tinggal di Yogyakarta.Mari kita telaah apa yang terjadi pada baris-baris kode di atas:
- Baris 1 (
def perkenalan(nama, kota):): functionperkenalandidefinisikan dengan dua parameter —namadankota. Pada tahap ini kedua nama tersebut belum memiliki nilai; keduanya hanya penanda posisi. - Baris 4 (
perkenalan("Budi", "Bandung")): pemanggilan mengirim dua argument — string"Budi"dan"Bandung". Interpreter Python mengikat"Budi"ke parameternamadan"Bandung"ke parameterkota, lalu mengeksekusi badan function. - Baris 5-6: mekanisme yang sama berulang dengan argument berbeda, menghasilkan keluaran berbeda dari badan function yang sama.
Pencocokan Berdasarkan Posisi #
Tanpa aturan tambahan, argument dipasangkan ke parameter berdasarkan urutan: argument pertama masuk ke parameter pertama, argument kedua ke parameter kedua, dan seterusnya. Konsekuensinya, urutan argument menentukan makna pemanggilan:
def bagi(angka, pembagi):
return angka / pembagi
print(bagi(10, 2))
print(bagi(2, 10))Output yang Dihasilkan:
5.0
0.2Kedua pemanggilan memakai angka yang sama — hanya urutannya ditukar — dan hasilnya berbeda jauh. Pada bagi(10, 2), angka 10 mengisi parameter angka dan 2 mengisi parameter pembagi. Pada bagi(2, 10) posisinya bertukar. Function bagi sendiri tidak pernah melihat “niat” kita; function hanya menerima posisi.
Jumlah Argument Harus Sesuai Jumlah Parameter #
Interpreter Python menghitung argument yang masuk dan mencocokkannya dengan parameter yang tersedia. Kekurangan maupun kelebihan memicu TypeError:
>>> def perkenalan(nama, kota):
... print(f"Nama saya {nama}, tinggal di {kota}.")
...
>>> perkenalan("Budi")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: perkenalan() missing 1 required positional argument: 'kota'Pesan galat di atas menyebutkan tiga hal berguna: nama function yang bermasalah, berapa argument yang kurang, dan parameter mana yang tidak terisi. Kelebihan argument juga tertolak dengan pesan yang sama jelasnya:
>>> def perkenalan(nama, kota):
... print(f"Nama saya {nama}, tinggal di {kota}.")
...
>>> perkenalan("Budi", "Bandung", "Cimahi")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: perkenalan() takes 2 positional arguments but 3 were givenRingkasan Perbedaan #
Empat poin berikut merangkum hubungan parameter dan argument:
- Parameter ditulis satu kali di
def; argument dikirim setiap kali memanggil. - Satu parameter menampung tepat satu argument per pemanggilan.
- Pencocokan default mengikuti posisi, sehingga urutan argument menentukan nilai tiap parameter.
- Jumlah keduanya harus cocok — selisih di salah satu sisi memicu
TypeError.
Aturan posisi bukan satu-satunya cara mengirim argument. Pemanggilan dengan menyebut nama parameter secara eksplisit dibahas pada Chapter Positional dan Keyword Arguments, sedangkan parameter dengan nilai bawaan dibahas pada Chapter Default Parameters.