partial
сам не знает, что данный позиционный аргумент должен быть присвоен x
только потому, что вы указали ключевой аргумент для alpha
. Если вы хотите, чтобы alpha
была определенной функцией, передайте эту функцию в качестве позиционного аргумента partial
.
>>> g = partial(B, alpha, y=2)
>>> g(5)
12
g
эквивалентно
def g(x):
return alpha(x) * 2 # == (x + 1) * 2
Кроме того, вы можете использовать исходное определение g
, но обязательно укажите 5
в качестве аргумента ключевого слова, избегая любых дополнительных позиционных аргументов.
>>> g = partial(B, alpha=alpha, y=2)
>>> g(x=5)
12
Это работает, поскольку между g
и partial
, вы предоставили ключевые аргументы для всех обязательных параметров, исключая необходимость в позиционных аргументах.