首頁 > 後端開發 > Python教學 > Python 中的「functools.partial」是什麼?

Python 中的「functools.partial」是什麼?

Mary-Kate Olsen
發布: 2024-12-02 02:37:11
原創
489 人瀏覽過

What is `functools.partial` in Python?

閱讀 Global News One 上的完整文章

什麼是 functools.partial?

functools.partial 透過將參數部分套用到現有函數來建立新函數。這有助於在某些參數重複或固定的場景中簡化函數呼叫。

Python 中的 functools.partial 函數可讓您「凍結」函數參數或關鍵字的某些部分,從而建立一個參數較少的新函數。當您想要修復函數的某些參數同時保持其他參數靈活時,它特別有用。

from functools import partial
登入後複製
登入後複製

基本文法

partial(func, *args, **kwargs)
登入後複製
登入後複製
  • func:部分應用的函數。
  • *args:要修復的位置參數。
  • `kwargs`**:要修正的關鍵字參數。

傳回的物件是一個新函數,其中固定參數被“凍結”,您只需在呼叫新函數時提供剩餘的參數。


範例

1.部分修正爭論

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
登入後複製
登入後複製

此處,partial 建立了一個總是使用 exponent=2 的新函數 square。


2.簡化函式呼叫

假設您有一個具有多個參數的函數,並且您經常使用一些固定值來呼叫它。

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.部分用於映射

您可以使用partial來調整函數以進行地圖等操作。

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.具有預設參數的部分函數

Partial 可以與已有預設參數的函數無縫協作。

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.與其他庫(例如 Pandas 或 JSON)結合

您可以將partial與Pandas等函式庫一起使用來簡化重複操作。

from functools import partial
登入後複製
登入後複製

何時使用 functools.partial

  1. 可重複使用邏輯
    • 當您想要建立具有固定參數的函數的可重複使用版本時。
  2. 簡化回調
    • 對於 tkinter、asyncio 或執行緒等函式庫很有用,其中回呼通常需要更簡單的簽名。
  3. 函數式程式設計
    • 適用於地圖、濾鏡或類似操作。
  4. 提高可讀性
    • 透過減少冗餘參數使程式碼更清晰。

註釋和最佳實踐

  • 檢查部分函數: 您可以使用partial.func、partial.args 和partial.keywords 檢查分部函數的凍結參數。
partial(func, *args, **kwargs)
登入後複製
登入後複製
  • 靈活性: 您可以在呼叫分部函數時覆寫凍結的參數。
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
登入後複製
登入後複製

高階範例:使用 Partial 實現高階函數

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!
登入後複製
登入後複製

使用 functools.partial 可以簡化和清理你的程式碼,特別是在處理重複的函數呼叫或高階函數時。如果您需要更多範例或高級用例,請告訴我!

以上是Python 中的「functools.partial」是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板