Такие библиотеки как funcy и underscore часто связывают с функциональным программированием, но настоящий их фокус - это практичность. Задача их - упростить манипулирование данными, коллекциями, функциями и даже потоком управления, а также абстрагировать часто встречащиеся полезные поведения. В своём докладе я приведу жизненные примеры использования всего этого, а также расскажу об идеях заложенных в и продвигаемых funcy.
Report
Share
Report
Share
1 of 38
Download to read offline
More Related Content
Александр Щепановский «Почему каждому языку нужен свой _»
19. Словарь с грязными данными
# вариант с циклом
d = {}
for k, v in request.items():
try:
d[k] = int(v)
except (TypeError, ValueError):
d[k] = None
# вариант с функцией
walk_values(silent(int), request)
20. Упрощённый вариант
# вариант с функцией
walk_values(int, request)
# вариант с генератором списков
{k: int(v) for k, v in request.items()}
21. Составляющие компоненты
# 3 составляющих
walk_values(int, data)
# около 8 составляющих
{k: int(v) for k, v in data.items()}
22. Высокий и низкий уровень
walk_values(int, data)
# красным выделены низкоуровневые детали
{k: int(v) for k, v in data.items()}
24. Естественный язык
# строю словарь из пар
# ключ-"значение, приведённое к целому числу"
# для каждой пары ключ-значение данного словаря
{k: int(v) for k, v in request.items()}
# привожу значения словаря к целым числам
walk_values(int, request)
25. Зачем нужен _
● содержит общие шаблоны
● скрывает низкоуровневые детали
● подстёгивает мышление на более абстрактном уровне
● ...
27. Порождение новых понятий
is_ascending = all(l < r for l, r
in pairwise(seq))
последовательность возрастает, если для всех
её соседних пар левый сосед меньше правого.
28. Зачем нужен _
● содержит общие шаблоны
● скрывает низкоуровневые детали
● подстёгивает мышление на более абстрактном уровне
● предоставляет набор высокоуровневых понятий
37. Зачем нужен _
● содержит общие шаблоны
● скрывает низкоуровневые детали
● подстёгивает мышление на более абстрактном уровне
● предоставляет набор высокоуровневых понятий