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

#python #function #arguments #keyword-argument

#python #функция #аргументы #ключевое слово-аргумент

Вопрос:

Если у меня есть функция с некоторыми аргументами, я могу определить функцию duck следующим образом:

 >>> 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)
  

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

Ответ №1:

Используйте 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