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:

IstilahMuncul diSifatContoh
Parameterbaris def saat mendefinisikannama penampungnama, kota
Argumentbaris 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:

python
def perkenalan(nama, kota):
    print(f"Nama saya {nama}, tinggal di {kota}.")

perkenalan("Budi", "Bandung")
perkenalan("Siti", "Denpasar")
perkenalan("Rina", "Yogyakarta")

Output yang Dihasilkan:

text
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:

  1. Baris 1 (def perkenalan(nama, kota):): function perkenalan didefinisikan dengan dua parameter — nama dan kota. Pada tahap ini kedua nama tersebut belum memiliki nilai; keduanya hanya penanda posisi.
  2. Baris 4 (perkenalan("Budi", "Bandung")): pemanggilan mengirim dua argument — string "Budi" dan "Bandung". Interpreter Python mengikat "Budi" ke parameter nama dan "Bandung" ke parameter kota, lalu mengeksekusi badan function.
  3. 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:

python
def bagi(angka, pembagi):
    return angka / pembagi

print(bagi(10, 2))
print(bagi(2, 10))

Output yang Dihasilkan:

text
5.0
0.2

Kedua 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:

python
>>> 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:

python
>>> 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 given

Ringkasan Perbedaan #

Empat poin berikut merangkum hubungan parameter dan argument:

  1. Parameter ditulis satu kali di def; argument dikirim setiap kali memanggil.
  2. Satu parameter menampung tepat satu argument per pemanggilan.
  3. Pencocokan default mengikuti posisi, sehingga urutan argument menentukan nilai tiap parameter.
  4. 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.