Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah * dan Operator Membongkar Argumen dalam Panggilan Fungsi Python?

Bagaimanakah * dan Operator Membongkar Argumen dalam Panggilan Fungsi Python?

DDD
DDDasal
2024-12-29 18:31:11589semak imbas

How Do * and  Operators Unpack Arguments in Python Function Calls?

Membongkar dalam Panggilan Fungsi Menggunakan dan Operator*

Python dan * pengendali memainkan peranan penting peranan dalam panggilan fungsi, membolehkan pembongkaran urutan, koleksi dan koleksi dengan mudah kamus.

Membongkar Urutan dan Koleksi dengan * (Bintang Tunggal)

Pengendali * (bintang tunggal) membongkar urutan atau koleksi ke dalam argumen kedudukan. Sebagai contoh, pertimbangkan kod berikut:

def add(a, b):
    return a + b

values = (1, 2)
s = add(*values)  # unpacks values into individual arguments

Ini bersamaan dengan menulis:

s = add(1, 2)

Membuka Kamus dengan (Bintang Berganda)**

Pengendali ** (double star) melakukan operasi yang serupa untuk kamus, mengekstrak argumen bernama. Sebagai contoh, diberikan:

values = {'a': 1, 'b': 2}
s = add(**values)  # unpacks values as keyword arguments

Ini bersamaan dengan:

s = add(a=1, b=2)

Menggabungkan Operator untuk Membongkar Panggilan Fungsi

Kedua-duanya dan * operator boleh digunakan bersama dalam panggilan fungsi. Sebagai contoh, diberikan:

def sum(a, b, c, d):
    return a + b + c + d

values1 = (1, 2)
values2 = {'c': 10, 'd': 15}
s = add(*values1, **values2)  # combines sequence and dictionary unpacking

Ini bersamaan dengan:

s = sum(1, 2, c=10, d=15)

Implikasi Prestasi

Operasi membongkar dengan dan * menanggung sedikit overhed kerana tuple dan penciptaan kamus. Walau bagaimanapun, untuk set data yang kecil, impak prestasi biasanya boleh diabaikan. Untuk set data yang lebih besar, pertimbangkan kaedah alternatif untuk kecekapan, seperti menggunakan tuple dan pemahaman kamus.

Kegunaan Tambahan dalam Parameter Fungsi

  • dan boleh juga digunakan untuk menerima hujah pembolehubah panjang dalam parameter fungsi. Rujuk soalan pelengkap "Apakah yang dilakukan oleh (bintang berganda/asterisk) dan * (bintang/asterisk) untuk parameter?" untuk maklumat lanjut.

Atas ialah kandungan terperinci Bagaimanakah * dan Operator Membongkar Argumen dalam Panggilan Fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn