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

Apakah `functools.partial` dalam Python?

Mary-Kate Olsen
Lepaskan: 2024-12-02 02:37:11
asal
488 orang telah melayarinya

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
Salin selepas log masuk
Salin selepas log masuk

Sintaks Asas

partial(func, *args, **kwargs)
Salin selepas log masuk
Salin selepas log masuk
  • 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
Salin selepas log masuk
Salin selepas log masuk

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!
Salin selepas log masuk
Salin selepas log masuk

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]
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

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)
Salin selepas log masuk
Salin selepas log masuk
  • 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
Salin selepas log masuk
Salin selepas log masuk

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!
Salin selepas log masuk
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan