functools.partial давно помогает замораживать аргументы функций. Но раньше были ограничения: если аргументы были только позиционные, их нельзя было зафиксировать через partial с именованными параметрами.В Python 3.14 это решает новый
functools.Placeholder.➡️ Пример: удаление пунктуации
До 3.14 приходилось писать обёртку:
import string
_table = str.maketrans("", "", string.punctuation)
def remove_punctuation(s):
return s.translate(_table)
print(remove_punctuation("Hello, world!")) # Hello world
С
Placeholder можно напрямую зафиксировать второй аргумент:from functools import partial, Placeholder
import string
_table = str.maketrans("", "", string.punctuation)
remove_punctuation = partial(str.translate, Placeholder, _table)
print(remove_punctuation("Hello, world!")) # Hello world
Что нужно понимать:
📝
Placeholder резервирует место для аргумента, который придёт позже.📝 Вызов
remove_punctuation("text") превращается в str.translate("text", _table).📝 Удобнее импортировать короче:
from functools import Placeholder as _P
Теперь
partial можно использовать и с функциями, где аргументы позиционные-only.Это открывает дорогу к более лаконичному и гибкому коду, без лишних обёрток.
🐸 Библиотека питониста
#буст
