2016-10-12 3 views
2

Если у меня есть функция с некоторыми аргументами, я могу определить функцию утку так:Как определить аргументы функции частично? 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) 

Как определить аргументы функции частично для функции утка?

ответ

2

Использование 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