Gunakan argumen variabel di Python

Selesai

Di Python, Anda dapat menggunakan sejumlah argumen dan argumen kata kunci tanpa mendeklarasikannya. Kemampuan ini berguna ketika suatu fungsi mungkin mendapatkan jumlah input yang tidak diketahui.

Argumen variabel

Argumen dalam fungsi diperlukan. Namun saat Anda menggunakan argumen variabel, fungsi memungkinkan sejumlah argumen (termasuk 0) untuk diteruskan. Sintaks untuk menggunakan argumen variabel adalah awalan tanda bintang tunggal (*) sebelum nama argumen.

Fungsi berikut mencetak argumen yang diterima:

def variable_length(*args):
    print(args)

Catatan

Tidak perlu memanggil argumen variabel args. Anda dapat menggunakan nama variabel yang valid. Meskipun biasa melihat *args atau *a, Anda harus mencoba menggunakan konvensi yang sama di seluruh proyek.

Dalam hal ini, *args menginstruksikan fungsi untuk menerima sejumlah argumen (termasuk 0). Di dalam fungsi, args sekarang tersedia sebagai variabel yang menampung semua argumen sebagai tuple. Cobalah fungsi dengan meneruskan sejumlah atau jenis argumen:

variable_length()
()
variable_length("one", "two")
('one', 'two')
variable_length(None)
(None,)

Seperti yang Anda lihat, tidak ada batasan jumlah atau jenis argumen yang diteruskan.

Sebuah kapal roket melewati beberapa langkah sebelum diluncurkan. Tergantung pada tugas atau penundaan, langkah-langkah ini mungkin memakan waktu lebih lama dari yang direncanakan. Mari kita buat fungsi panjang variabel yang dapat menghitung berapa menit hingga peluncuran, mengingat berapa banyak waktu yang dibutuhkan setiap langkah:

def sequence_time(*args):
    total_minutes = sum(args)
    if total_minutes < 60:
        return f"Total time to launch is {total_minutes} minutes"
    else:
        return f"Total time to launch is {total_minutes/60} hours"

Cobalah fungsi dengan melewatkan beberapa menit:

sequence_time(4, 14, 18)
Total time to launch is 36 minutes.
sequence_time(4, 14, 48)
Total time to launch is 1.1 hours.

Catatan

Saat Anda menggunakan argumen variabel, setiap nilai tidak lagi diberi nama variabel. Semua nilai sekarang menjadi bagian dari nama variabel catch-all yang menggunakan tanda bintang (args dalam contoh ini).

Argumen kata kunci variabel

Agar suatu fungsi menerima sejumlah argumen kata kunci, Anda menggunakan sintaks yang serupa. Dalam hal ini, tanda bintang ganda diperlukan:

def variable_length(**kwargs):
    print(kwargs)

Coba fungsi contoh, yang mencetak nama dan nilai yang diteruskan sebagai kwargs:

variable_length(tanks=1, day="Wednesday", pilots=3)
{'tanks': 1, 'day': 'Wednesday', 'pilots': 3}

Jika Anda sudah terbiasa dengan kamus Python, Anda akan melihat bahwa argumen kata kunci panjang variabel ditetapkan sebagai kamus. Untuk berinteraksi dengan variabel dan nilai, gunakan operasi yang sama seperti kamus.

Catatan

Seperti argumen variabel, Anda tidak diharuskan menggunakan kwargs saat menggunakan argumen kata kunci variabel. Anda dapat menggunakan nama variabel yang valid. Meskipun biasa melihat **kwargs atau **kw, Anda harus mencoba menggunakan konvensi yang sama di seluruh proyek.

Dalam fungsi ini, mari gunakan argumen kata kunci variabel untuk melaporkan astronot yang ditugaskan ke misi. Karena fungsi ini memungkinkan sejumlah argumen kata kunci, itu dapat digunakan kembali terlepas dari jumlah astronot yang ditugaskan:

def crew_members(**kwargs):
    print(f"{len(kwargs)} astronauts assigned for this mission:")
    for title, name in kwargs.items():
        print(f"{title}: {name}")

Cobalah dengan kru Apollo 11:

crew_members(captain="Neil Armstrong", pilot="Buzz Aldrin", command_pilot="Michael Collins")
3 astronauts assigned for this mission:
captain: Neil Armstrong
pilot: Buzz Aldrin
command_pilot: Michael Collins

Karena Anda dapat melewatkan kombinasi argumen kata kunci apa pun, pastikan untuk menghindari kata kunci yang berulang. Kata kunci berulang mengakibatkan kesalahan:

crew_members(captain="Neil Armstrong", pilot="Buzz Aldrin", pilot="Michael Collins")
  File "<stdin>", line 1
SyntaxError: keyword argument repeated: pilot