Библиотека Python разработчика | Книги по питону
Иногда нужно создать функцию на основе более универсальной.
Например, у функции int() есть параметр base, который мы хотим зафиксировать, чтобы получить новую функцию base2:
>>> int("10")
10
>>> int("10", 2)
2
>>> def base2(x):
... return int(x, 2)
...
>>> base2("10")
2
functools.partial позволяет сделать то же самое, но точнее и семантически понятнее:
base2 = partial(int, base=2)
Это полезно, когда нужно передать функцию как аргумент другой, более общей функции, но при этом некоторые аргументы должны быть зафиксированы:
>>> map(partial(int, base=2), ["1", "10", "100"])
[1, 2, 4]
Без partial пришлось бы делать так:
>>> map(lambda x: int(x, base=2), ["1", "10", "100"])
[1, 2, 4]
📲 Мы в MAX
👉@BookPython
3 · 1.5K ·