簡體   English   中英

如何部分定義函數參數? Python

[英]How to define function arguments partially? Python

如果我有一個帶有一些參數的函數,我可以像這樣定義一個鴨子函數:

>>> def f(x, y=0, z=42): return x + y * z 
... 
>>> f(1,2,3)
7
>>> g = f
>>> f(1,2)
85
>>> g(1,2)
85

我試圖部分覆蓋參數,但這不起作用:

>>> g = f(z=23)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() takes at least 1 argument (1 given)

如何為鴨子函數部分定義函數參數?

使用functools.partial

>>> from functools import partial
>>> def f(x, y=0, z=42): return x + y * z
... 
>>> g = partial(f, z=23)
>>> g(1,2)
47
>>> f(1,2,23)
47

暫無
暫無

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

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