Python terkenal dengan kesederhanaan dan fleksibiliti, yang selalunya datang daripada keupayaannya untuk mengendalikan fungsi dengan bilangan argumen yang berubah-ubah.
Dua simbol khas, *args dan **kwargs, memainkan peranan penting dalam kelenturan ini.
Dalam artikel ini, kami akan meneroka maksud simbol ini, cara menggunakannya dan sebab ia sangat berkuasa.
Parameter *args membenarkan fungsi menerima sebarang bilangan argumen kedudukan.
Asterisk (*) ialah isyarat kepada Python bahawa semua argumen kedudukan harus dikumpulkan menjadi tupel.
def greet(*args): for name in args: print(f"Hello, {name}!") greet('Alice', 'Bob', 'Charlie')
Output:
Hello, Alice! Hello, Bob! Hello, Charlie!
Penjelasan:
Apabila saya mula-mula mengetahui tentang *args, rasanya seperti membuka kunci tahap baharu dalam permainan video. Jadi lebih mudah untuk menentukan fungsi.
Begitu juga, **kwargs membenarkan fungsi untuk menerima sebarang bilangan hujah kata kunci.
Asteris berganda (**) memberitahu Python untuk mengumpulkan semua hujah kata kunci ke dalam kamus.
def display_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") display_info(name='Alice', age=30, city='New York')
Output:
name: Alice age: 30 city: New York
Penjelasan:
Menggunakan **kwargs telah menjadi penyelamat apabila berurusan dengan fungsi yang memerlukan set fleksibel parameter bernama. Ia memastikan kod saya bersih dan teratur.
Anda boleh menggunakan kedua-dua *args dan **kwargs dalam fungsi yang sama untuk menerima semua jenis hujah.
def make_sentence(*args, **kwargs): sentence = ' '.join(args) for key, value in kwargs.items(): sentence += f" {key} {value}" print(sentence) make_sentence('I', 'love', 'Python', exclamation='!', emoji='?')
Output:
I love Python exclamation ! emoji ?
Penjelasan:
Mencampurkan *args dan **kwargs terasa seperti memasak dengan semua bahan yang betul—anda boleh melaraskan resipi mengikut kehendak anda tanpa memecahkan hidangan.
Apabila menggunakan *args dan **kwargs, susunan anda meletakkannya dalam definisi fungsi adalah penting:
def greet(*args): for name in args: print(f"Hello, {name}!") greet('Alice', 'Bob', 'Charlie')
Contoh Pesanan Salah
Hello, Alice! Hello, Bob! Hello, Charlie!
Saya telah tersandung pesanan ini lebih banyak kali daripada yang saya ingin akui. Menyemak semula susunan parameter menjimatkan banyak masa penyahpepijatan!
Asteris bukan sahaja berguna dalam definisi fungsi tetapi juga semasa memanggil fungsi.
Mereka boleh membongkar urutan dan kamus menjadi hujah.
def display_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") display_info(name='Alice', age=30, city='New York')
Output:
name: Alice age: 30 city: New York
Penjelasan:
Ciri ini menjadikan kod saya lebih bersih, terutamanya apabila berurusan dengan data yang secara semula jadi terdapat dalam senarai atau kamus.
Apabila anda mahu fungsi mengendalikan bilangan input yang berbeza-beza tanpa menukar tandatangan fungsi.
def make_sentence(*args, **kwargs): sentence = ' '.join(args) for key, value in kwargs.items(): sentence += f" {key} {value}" print(sentence) make_sentence('I', 'love', 'Python', exclamation='!', emoji='?')
Apabila menulis penghias, anda sering tidak mengetahui bilangan hujah yang akan diterima oleh fungsi yang dibalut.
I love Python exclamation ! emoji ?
Penghias ialah salah satu ciri kegemaran saya dalam Python dan *args dan **kwargs menjadikannya mungkin.
Salah Letakkan Parameter: Pastikan *args dan **kwarg diletakkan dengan betul dalam tandatangan fungsi.
Terlalu banyak: Walaupun *args dan **kwarg berkuasa, penggunaan berlebihan boleh menyebabkan kod anda sukar difahami.
Melupakan Asterisk: Ingat bahawa args dan kwarg hanyalah konvensyen. Asterisk (*, **) itulah yang menjadikannya istimewa.
def func(a, b, *args, **kwargs): pass
Baki adalah kunci. Walaupun tergoda untuk menggunakan *args dan **kwargs di mana-mana, kadangkala parameter eksplisit adalah lebih jelas.
Memahami *args dan **kwargs membuka dunia kemungkinan dalam pengaturcaraan Python.
Ia memberikan fleksibiliti untuk menulis fungsi yang boleh mengendalikan bilangan hujah yang sewenang-wenangnya, menjadikan kod anda lebih dinamik dan boleh disesuaikan.
Menguasai *args dan **kwargs merupakan titik perubahan dalam perjalanan Python saya.
Ia menjadikan pengekodan lebih menyeronokkan dan program saya lebih mantap. Jika anda masih belum meneroka ciri ini, saya amat mengesyorkan anda menyelam!
Atas ialah kandungan terperinci Memahami Python's *args dan **kwargs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!