Di Python, anda boleh menentukan fungsi yang memerlukan bilangan argumen yang berubah-ubah. Dalam artikel ini, anda akan belajar menentukan fungsi tersebut menggunakan argumen lalai, kata kunci dan sewenang-wenangnya.
Video: Hujah Fungsi Python: Kedudukan, Kata Kunci dan Lalai
Hujah
Dalam topik fungsi yang ditentukan pengguna, kami belajar tentang menentukan fungsi dan memanggilnya. Jika tidak, panggilan fungsi akan menyebabkan ralat. Inilah contohnya.
def greet(name, msg): """This function greets to the person with the provided message""" print("Hello", name + ', ' + msg) greet("Monica", "Good morning!")
Pengeluaran
Hello Monica, Selamat pagi!
Di sini, fungsi greet()
mempunyai dua parameter.
Oleh kerana kita memanggil fungsi ini dengan dua argumen, ia berjalan dengan lancar dan kita tidak mendapat sebarang kesalahan.
Sekiranya kita menyebutnya dengan jumlah argumen yang berbeza, jurubahasa akan menunjukkan mesej ralat. Di bawah ini adalah panggilan untuk fungsi ini dengan satu dan tanpa argumen bersama dengan mesej ralat masing-masing.
>>> salam ("Monica") # hanya satu argumen TypeError: salam () hilang 1 argumen kedudukan yang diperlukan: 'msg'
>>> salam () # tidak ada argumen TypeError: salam () hilang 2 argumen kedudukan yang diperlukan: 'name' dan 'msg'
Hujah Fungsi Pembolehubah
Hingga kini, fungsi mempunyai sejumlah argumen yang tetap. Di Python, ada cara lain untuk menentukan fungsi yang dapat mengambil sejumlah argumen.
Tiga bentuk berbeza dari jenis ini dijelaskan di bawah.
Hujah Lalai Python
Argumen fungsi boleh mempunyai nilai lalai di Python.
Kami dapat memberikan nilai lalai untuk argumen dengan menggunakan operator penugasan (=). Inilah 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?")
Pengeluaran
Hello Kate, selamat pagi! Hello Bruce, Bagaimana anda melakukannya?
Dalam fungsi ini, parameter name
tidak mempunyai nilai lalai dan diperlukan (wajib) semasa panggilan.
Sebaliknya, parameter tersebut msg
mempunyai nilai lalai "Good morning!"
. Jadi, adalah pilihan semasa panggilan. Sekiranya nilai diberikan, ia akan menimpa nilai lalai.
Sebilangan argumen dalam fungsi boleh mempunyai nilai lalai. Tetapi setelah kita mempunyai argumen lalai, semua argumen di sebelah kanannya juga harus mempunyai nilai lalai.
Ini bermaksud mengatakan, argumen bukan lalai tidak boleh mengikuti argumen lalai. Sebagai contoh, jika kita telah menentukan tajuk fungsi di atas sebagai:
def salam (msg = "Selamat pagi!", nama):
Kami akan mendapat ralat seperti:
SyntaxError: argumen bukan lalai mengikuti argumen lalai
Hujah Kata Kunci Python
Apabila kita memanggil fungsi dengan beberapa nilai, nilai-nilai ini diberikan kepada argumen mengikut kedudukannya.
Sebagai contoh, dalam fungsi di atas greet()
, ketika kita menyebutnya sebagai greet("Bruce", "How do you do?")
, nilai "Bruce"
akan diberikan kepada nama argumen dan serupa "How do you do?"
dengan msg.
Python membolehkan fungsi dipanggil menggunakan argumen kata kunci. Apabila kita memanggil fungsi dengan cara ini, urutan (kedudukan) argumen dapat diubah. Berikutan panggilan ke fungsi di atas semuanya sah 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 kita lihat, kita boleh mencampurkan argumen kedudukan dengan argumen kata kunci semasa panggilan fungsi. Tetapi kita mesti ingat bahawa argumen kata kunci mesti mengikuti argumen kedudukan.
Mempunyai argumen kedudukan selepas argumen kata kunci akan menghasilkan kesilapan. Sebagai contoh, fungsi memanggil seperti berikut:
greet(name="Bruce","How do you do?")
Akan mengakibatkan ralat:
SyntaxError: arg bukan kata kunci selepas kata kunci arg
Hujah Arbitrari Python
Kadang-kadang, kita tidak mengetahui terlebih dahulu jumlah argumen yang akan diteruskan ke dalam fungsi. Python membolehkan kita menangani situasi seperti ini melalui panggilan fungsi dengan sejumlah argumen yang sewenang-wenangnya.
Dalam definisi fungsi, kita menggunakan tanda bintang (*) sebelum nama parameter untuk menunjukkan argumen semacam ini. Inilah 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")
Pengeluaran
Hello Monica Hello Luke Hello Steve Hello John
Di sini, kami telah memanggil fungsi dengan pelbagai argumen. Argumen ini dibungkus menjadi tuple sebelum diteruskan ke fungsi. Di dalam fungsi, kami menggunakan for
gelung untuk mendapatkan kembali semua argumen.