Dengan Python, Anda dapat menentukan fungsi yang menggunakan sejumlah variabel dari argumen. Pada artikel ini, Anda akan belajar mendefinisikan fungsi-fungsi tersebut menggunakan argumen default, kata kunci, dan arbitrer.
Video: Argumen Fungsi Python: Posisi, Kata Kunci dan Default
Argumen
Dalam topik fungsi yang ditentukan pengguna, kita belajar tentang mendefinisikan fungsi dan memanggilnya. Jika tidak, pemanggilan fungsi akan menghasilkan kesalahan. Berikut ini contohnya.
def greet(name, msg): """This function greets to the person with the provided message""" print("Hello", name + ', ' + msg) greet("Monica", "Good morning!")
Keluaran
Halo Monica, Selamat pagi!
Di sini, fungsinya greet()
memiliki dua parameter.
Karena kami telah memanggil fungsi ini dengan dua argumen, ini berjalan dengan lancar dan kami tidak mendapatkan kesalahan apa pun.
Jika kita menyebutnya dengan jumlah argumen yang berbeda, interpreter akan menampilkan pesan error. Di bawah ini adalah panggilan ke fungsi ini dengan satu dan tanpa argumen bersama dengan pesan kesalahannya masing-masing.
>>> greet ("Monica") # hanya satu argumen TypeError: greet () tidak memiliki 1 argumen posisi yang diperlukan: 'msg'
>>> greet () # tidak ada argumen TypeError: greet () kehilangan 2 argumen posisi yang diperlukan: 'name' dan 'msg'
Argumen Fungsi Variabel
Hingga saat ini, fungsi memiliki sejumlah argumen tetap. Di Python, ada cara lain untuk mendefinisikan fungsi yang dapat menggunakan sejumlah variabel argumen.
Tiga bentuk berbeda dari jenis ini dijelaskan di bawah.
Argumen Default Python
Argumen fungsi dapat memiliki nilai default dengan Python.
Kita bisa memberikan nilai default ke argumen dengan menggunakan operator penugasan (=). Berikut ini contohnya.
def greet(name, msg="Good morning!"): """ This function greets to the person with the provided message. If the message is not provided, it defaults to "Good morning!" """ print("Hello", name + ', ' + msg) greet("Kate") greet("Bruce", "How do you do?")
Keluaran
Halo Kate, Selamat pagi! Halo Bruce, Bagaimana kabarmu?
Dalam fungsi ini, parameter name
tidak memiliki nilai default dan diperlukan (wajib) selama panggilan.
Di sisi lain, parameter msg
memiliki nilai default "Good morning!"
. Jadi, ini opsional selama panggilan. Jika nilai diberikan, nilai tersebut akan menimpa nilai default.
Sejumlah argumen dalam suatu fungsi dapat memiliki nilai default. Tapi begitu kita memiliki argumen default, semua argumen di sebelah kanannya juga harus memiliki nilai default.
Artinya, argumen non-default tidak dapat mengikuti argumen default. Misalnya, jika kita telah mendefinisikan header fungsi di atas sebagai:
def greet (msg = "Selamat pagi!", nama):
Kami akan mendapatkan kesalahan sebagai:
SyntaxError: argumen non-default mengikuti argumen default
Argumen Kata Kunci Python
Saat kita memanggil fungsi dengan beberapa nilai, nilai-nilai ini ditugaskan ke argumen sesuai dengan posisinya.
Misalnya, dalam fungsi di atas greet()
, ketika kita memanggilnya sebagai greet("Bruce", "How do you do?")
, nilai "Bruce"
diberikan ke nama argumen dan serupa "How do you do?"
dengan msg.
Python memungkinkan fungsi dipanggil menggunakan argumen kata kunci. Saat kita memanggil fungsi dengan cara ini, urutan (posisi) argumen dapat diubah. Setelah panggilan ke fungsi di atas semuanya valid dan menghasilkan hasil yang sama.
# 2 keyword arguments greet(name = "Bruce",msg = "How do you do?") # 2 keyword arguments (out of order) greet(msg = "How do you do?",name = "Bruce") 1 positional, 1 keyword argument greet("Bruce", msg = "How do you do?")
Seperti yang bisa kita lihat, kita bisa mencampur argumen posisi dengan argumen kata kunci selama pemanggilan fungsi. Tetapi kita harus ingat bahwa argumen kata kunci harus mengikuti argumen posisi.
Memiliki argumen posisi setelah argumen kata kunci akan menghasilkan kesalahan. Misalnya, panggilan fungsi sebagai berikut:
greet(name="Bruce","How do you do?")
Akan mengakibatkan kesalahan:
SyntaxError: non-kata kunci arg setelah kata kunci arg
Argumen Sewenang-wenang Python
Terkadang, kita tidak mengetahui sebelumnya jumlah argumen yang akan diteruskan ke suatu fungsi. Python memungkinkan kita untuk menangani situasi semacam ini melalui pemanggilan fungsi dengan sejumlah argumen yang berubah-ubah.
Dalam definisi fungsi, kami menggunakan tanda bintang (*) sebelum nama parameter untuk menunjukkan jenis argumen ini. Berikut ini contohnya.
def greet(*names): """This function greets all the person in the names tuple.""" # names is a tuple with arguments for name in names: print("Hello", name) greet("Monica", "Luke", "Steve", "John")
Keluaran
Halo Monica Halo Luke Halo Steve Halo John
Di sini, kami telah memanggil fungsi dengan banyak argumen. Argumen ini dibungkus menjadi tupel sebelum diteruskan ke fungsi. Di dalam fungsinya, kami menggunakan for
perulangan untuk mengambil kembali semua argumen.