Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah `functools.partial` dalam Python?

Apakah `functools.partial` dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-02 02:37:11561semak imbas

What is `functools.partial` in Python?

Baca artikel lengkap mengenai Global News One

Apakah itu functools.partial?

functools.partial mencipta fungsi baharu dengan menggunakan sebahagian argumen pada fungsi sedia ada. Ini berguna untuk memudahkan panggilan fungsi dalam senario di mana argumen tertentu berulang atau tetap.

Fungsi functools.partial dalam Python membolehkan anda "membekukan" beberapa bahagian hujah atau kata kunci fungsi, mencipta fungsi baharu dengan parameter yang lebih sedikit. Ia amat berguna apabila anda ingin membetulkan parameter tertentu sesuatu fungsi sambil memastikan yang lain fleksibel.

from functools import partial

Sintaks Asas

partial(func, *args, **kwargs)
  • fungsi: Fungsi untuk digunakan sebahagian.
  • *args: Hujah kedudukan untuk dibetulkan.
  • `kwargs`**: Hujah kata kunci untuk dibetulkan.

Objek yang dikembalikan ialah fungsi baharu dengan argumen tetap adalah "beku", dan anda hanya perlu membekalkan yang selebihnya apabila memanggil fungsi baharu.


Contoh

1. Membetulkan Separa Hujah

def power(base, exponent):
    return base ** exponent

# Create a square function by fixing exponent = 2
square = partial(power, exponent=2)

# Now, square() only needs the base
print(square(5))  # Output: 25
print(square(10))  # Output: 100

Di sini, separa mencipta petak fungsi baharu yang sentiasa menggunakan eksponen=2.


2. Memudahkan Panggilan Fungsi

Andaikan anda mempunyai fungsi dengan berbilang argumen dan anda sering memanggilnya dengan beberapa nilai tetap.

def greet(greeting, name):
    return f"{greeting}, {name}!"

# Fix the greeting
say_hello = partial(greet, greeting="Hello")
say_goodbye = partial(greet, greeting="Goodbye")

print(say_hello("Alice"))   # Output: Hello, Alice!
print(say_goodbye("Alice")) # Output: Goodbye, Alice!

3. Separa untuk Digunakan dalam Pemetaan

Anda boleh menggunakan separa untuk menyesuaikan fungsi untuk operasi seperti peta.

def multiply(x, y):
    return x * y

# Fix y = 10
multiply_by_10 = partial(multiply, y=10)

# Use in a map
numbers = [1, 2, 3, 4]
result = map(multiply_by_10, numbers)
print(list(result))  # Output: [10, 20, 30, 40]

4. Separa dengan Fungsi Yang Mempunyai Argumen Lalai

Sebahagian berfungsi dengan lancar dengan fungsi yang sudah mempunyai argumen lalai.

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

# Fix b to 20
add_with_20 = partial(add, b=20)
print(add_with_20(5))  # Output: 25

5. Menggabungkan dengan Perpustakaan Lain (cth., Panda atau JSON)

Anda boleh menggunakan separa dengan perpustakaan seperti Panda untuk memudahkan operasi berulang.

from functools import partial

Bila Menggunakan functools.partial

  1. Logik Boleh Guna Semula:
    • Apabila anda ingin mencipta versi fungsi yang boleh diguna semula dengan argumen tetap.
  2. Memudahkan Panggilan Balik:
    • Berguna untuk perpustakaan seperti tkinter, asyncio atau threading, yang panggilan balik selalunya memerlukan tandatangan yang lebih ringkas.
  3. Pengaturcaraan Fungsional:
    • Berfungsi dengan baik dengan peta, penapis atau operasi yang serupa.
  4. Meningkatkan Kebolehbacaan:
    • Menjadikan kod lebih bersih dengan mengurangkan hujah yang berlebihan.

Nota dan Amalan Terbaik

  • Memeriksa Fungsi Separa: Anda boleh memeriksa hujah beku bagi fungsi separa menggunakan partial.func, partial.args dan partial.keywords.
partial(func, *args, **kwargs)
  • Fleksibiliti: Anda boleh mengatasi hujah beku apabila memanggil fungsi separa.
def power(base, exponent):
    return base ** exponent

# Create a square function by fixing exponent = 2
square = partial(power, exponent=2)

# Now, square() only needs the base
print(square(5))  # Output: 25
print(square(10))  # Output: 100

Contoh Lanjutan: Menggunakan Separa untuk Fungsi Tertib Tinggi

def greet(greeting, name):
    return f"{greeting}, {name}!"

# Fix the greeting
say_hello = partial(greet, greeting="Hello")
say_goodbye = partial(greet, greeting="Goodbye")

print(say_hello("Alice"))   # Output: Hello, Alice!
print(say_goodbye("Alice")) # Output: Goodbye, Alice!

Menggunakan functools.partial boleh memudahkan dan membersihkan kod anda, terutamanya apabila berurusan dengan panggilan fungsi berulang atau fungsi peringkat lebih tinggi. Beritahu saya jika anda mahukan lebih banyak contoh atau kes penggunaan lanjutan!

Atas ialah kandungan terperinci Apakah `functools.partial` dalam 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