tgoop.com/pyproglib/7084
Create:
Last Update:
Last Update:
🔥 Новое в Python 3.14: functools.Placeholderfunctools.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.Это открывает дорогу к более лаконичному и гибкому коду, без лишних обёрток.
#буст