Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Saya Boleh Pratakrif Argumen untuk Fungsi Python Menggunakan functools.partial?

Bagaimana Saya Boleh Pratakrif Argumen untuk Fungsi Python Menggunakan functools.partial?

DDD
DDDasal
2024-12-15 09:42:12621semak imbas

How Can I Predefine Arguments for Python Functions Using functools.partial?

Memahami Pengikatan Argumen dalam Fungsi Python

Andaikan anda ingin mencipta fungsi yang boleh dipanggil kemudian dengan argumen tertentu yang dipratakrifkan atau dengan tambahan yang lebih sedikit hujah. Bagaimanakah ini boleh dicapai dalam Python?

Penyelesaian: functools.partial

Penyelesaian terletak pada penggunaan fungsi functools.partial. Ia mengembalikan boleh panggil yang membungkus fungsi dengan beberapa atau semua hujahnya beku. Ini membolehkan anda kemudiannya menggunakan fungsi yang dibalut dengan argumen beku yang telah digunakan.

Contoh Penggunaan

Mari kita tunjukkan cara mengikat hujah menggunakan functools.partial:

import functools
  
print_hello = functools.partial(sys.stdout.write, "Hello world\n")
  
print_hello()

Output:

Hello world

Kod ini mencipta fungsi print_hello yang akan sentiasa mencetak "Hello world" apabila dipanggil. Fungsi functools.partial telah mengikat argumen pertama sys.stdout.write pada rentetan "Hello world".

Equivalent Lambda Expression

Kod di atas adalah setara kepada ungkapan lambda berikut:

print_hello = lambda *a, **kw: sys.stdout.write("Hello world\n", *a, **kw)

Dalam erti kata lain, functools.partial menyediakan cara yang mudah untuk mencipta fungsi baharu dengan menggunakan sebahagian argumen pada fungsi sedia ada.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Pratakrif Argumen untuk Fungsi Python Menggunakan functools.partial?. 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