Python Glossary English

все 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Сообщить о неточности