Asterisk tunggal ( *) memainkan peranan penting dalam membongkar urutan atau koleksi ke dalam hujah kedudukan. Pertimbangkan contoh berikut:
def add(a, b): return a + b values = (1, 2) s = add(*values) # Equivalent to: s = add(1, 2)
Dengan menggunakan operator *, kami membongkar tuple nilai dengan berkesan dan menghantar elemennya (1 dan 2) sebagai argumen kepada fungsi tambah. Ini amat berguna apabila bekerja dengan urutan panjang berubah-ubah.
Asterisk berganda (**) mempunyai tujuan yang sama tetapi untuk kamus, membolehkan anda menyediakan nilai untuk argumen bernama. Ambil contoh ini:
values = { 'a': 1, 'b': 2 } s = add(**values) # Equivalent to: s = add(a=1, b=2)
Di sini, operator ** membongkar kamus nilai, mengekstrak pasangan nilai kunci dan menggunakannya untuk menetapkan hujah kata kunci yang sepadan dalam panggilan fungsi tambah.
Adalah diperhatikan bahawa kedua-dua pengendali boleh digabungkan dalam panggilan fungsi yang sama. Pertimbangkan senario berikut:
def sum(a, b, c, d): return a + b + c + d values1 = (1, 2) values2 = { 'c': 10, 'd': 15 } s = add(*values1, **values2) # Equivalent to: s = sum(1, 2, c=10, d=15)
Panggilan ini secara berkesan membongkar nilai1 ke dalam dua argumen kedudukan pertama (a dan b) dan nilai2 ke dalam argumen kata kunci yang tinggal (c dan d).
Implikasi Pelaksanaan dan Prestasi:
Python melaksanakan tingkah laku ini melalui gabungan argumen fungsi penjanaan panggilan yang mengikat dan dinamik. Menggunakan dan * membolehkan pemanggilan fungsi yang fleksibel dengan argumen panjang berubah-ubah, yang membawa kepada kod yang ringkas dan serba boleh. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa penggunaan berlebihan pengendali ini berpotensi menjejaskan prestasi, terutamanya apabila digabungkan dengan panggilan fungsi frekuensi tinggi.
Atas ialah kandungan terperinci Bagaimanakah * dan Membongkar Argumen dalam Fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!