все Python 3functoolsпонятие
functools.partial
частичное
Создаёт новую функцию с частично заполненными аргументами (частичное применение).
Синтаксис
from functools import partial
functools.partial(func, /, *args, **kwargs) -> partial
Аргументы фиксируются в момент создания partial, а не в момент вызова — этим он и отличается от lambda с поздним связыванием, из-за которого в цикле все замыкания видят последнее значение переменной. Позиционные аргументы приклеиваются слева, поэтому «пропустить» первый параметр и заполнить только второй можно по имени или, с 3.14, позиционно через заполнитель functools.Placeholder. В отличие от лямбды, объект partial хранит func, args и keywords, читаемо печатается при отладке и сериализуется через pickle.
Примеры
from functools import partial
def power(base, exp):
return base ** exp
square = partial(power, exp=2)
print(square(4)) # → 16
cube = partial(power, exp=3)
print(cube(3)) # → 27
add = lambda a, b: a + b
add10 = partial(add, 10)
print(add10(5)) # → 15
print_sep = partial(print, sep=', ')
print_sep(1, 2, 3) # → 1, 2, 3
# partial с методом
from functools import partial
int2 = partial(int, base=2)
print(int2('1010')) # → 10
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности