簡體   English   中英

functools.partial中的簡化簽名

[英]a simplified signature in functools.partial

在官方文檔中解釋functools 10.2。 functools-可調用對象上的高階函數和操作-Python 3.7.0文檔

partial()用於部分函數應用程序,該應用程序“凍結”函數的參數和/或關鍵字的某些部分,從而生成具有簡化簽名的新對象。 例如,partial()可用於創建行為類似於int()函數的可調用對象,其中基本參數默認為兩個:

我可以理解大部分的聲明,並承認“凍結”是描述上下文的精確而精確的詞。

我無法理解的是“簡化簽名”,
它指的是哪種簽名?

在這種情況下, 簡化只是意味着更少的參數。 如果你有

import functools

def func(a, b, x=8, y=9):
    print((a, b, x, y))

simple_func = functools.partial(func, 1, x=2)

,然后simple_func結束一個函數,該函數具有一個參數a和一個關鍵字參數y

>>> simple_func(3, y=4)
(1, 3, 2, 4)

函數簽名函數的名稱,其參數以及嚴格地說是其返回類型:

mymodule.myfunction(foo, bar=None, *, baz=42)

這是簽名 當您partial綁定一個函數時,它會返回一個新函數,通常帶有較少的參數,因為您已經綁定了一些參數:

partial(mymodule.myfunction, bar='Mike')

這個新的部分綁定的函數的簽名是:

func(foo, *, baz=42)

比原始簽名更簡單的簽名。

簽名表示函數的調用方式,如果您有一個需要五個字符串的函數,則其簽名為

foo (st1, st2, st3, st4, st5)

如果現在使用partial凍結其中三個,則只需兩個

foo (st1, st2)

之所以“簡化”是因為它需要較少的參數。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM