[英]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.