Membongkar Argumen dengan dan dalam Panggilan Fungsi Python*
Dalam panggilan fungsi Python, asterisk ( ) dan pengendali asterisk berganda (*) memainkan peranan penting dalam membongkar jujukan dan kamus ke dalam argumen kedudukan atau dinamakan, masing-masing.
Bintang Tunggal (*) Membongkar:
Operator asterisk tunggal (*) membongkar urutan atau koleksi ke dalam argumen kedudukan. Pertimbangkan fungsi berikut:
def add(a, b): return a + b
Memandangkan satu tuple nilai nilai = (1, 2), kita boleh membongkar tuple dan menghantar elemennya ke fungsi tambah menggunakan operator *:
s = add(*values)
Ini bersamaan dengan penulisan:
s = add(1, 2)
Double Star () Membongkar:**
Pengendali asterisk berganda (**) mengikut prinsip yang sama tetapi beroperasi pada kamus. Ia membongkar pasangan nilai kunci kamus ke dalam argumen bernama:
values = { 'a': 1, 'b': 2 } s = add(**values)
Ini bersamaan dengan:
s = add(a=1, b=2)
Pembukaan Gabungan:
Kedua-dua pengendali boleh digunakan secara serentak dalam satu panggilan fungsi. Sebagai contoh, diberikan fungsi:
def sum(a, b, c, d): return a + b + c + d
Dan dua set nilai:
values1 = (1, 2) values2 = { 'c': 10, 'd': 15 }
Kita boleh membongkar nilai ini seperti berikut:
s = add(*values1, **values2)
Ini ialah bersamaan dengan:
s = sum(1, 2, c=10, d=15)
Prestasi Implikasi:
Menggunakan operator pembongkaran dan * umumnya mempunyai implikasi prestasi yang minimum. Walau bagaimanapun, jika urutan atau kamus yang dibongkar adalah besar, overhed tambahan mungkin ditanggung semasa proses membongkar. Ini boleh diabaikan untuk kebanyakan senario praktikal.
Kaedah Setara:
Sebagai alternatif kepada menggunakan operator pembongkaran, anda juga boleh menggunakan sintaks *args dan **kwargs , masing-masing:
def add(*args, **kwargs): s = 0 for arg in args: s += arg for key, value in kwargs.items(): s += value
Akhirnya, pilihan antara menggunakan operator pembongkaran atau *args/**kwargs bergantung pada gaya dan pilihan kod anda.
Atas ialah kandungan terperinci Bagaimana * dan Membongkar Argumen dalam Panggilan Fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!