Nowadays Python is very likely to be the first choice for developing machine learning or data science applications. Reasons for this are manifold, but very likely to be found in the fact that the Python language is amazing (⚠️ _opinionated_), and the open source community in the PyData ecosystem is absolutely fantastic (💙 _that's a fact_ [1](https://youtu.be/d9Qm3PPoYNQ?t=800) [2](https://pydata.org/diversity-inclusion/) [3](https://numfocus.org/)). In this context, one of the most remarkable features of the Python language is its ability in supporting multiple programming styles (from _imperative_ to _OOP_ and also _functional programming_). Thanks to this versatility, developers have their freedom to choose whichever programming style they prefer.
Functional programming is indeed very fascinating, and it is great for in-demand tasks such as _data filtering_ or _data processing_. Of course, this doesn't say anything about other paradigms, but sometimes the solution to a data problem could be more [naturally expressed](https://gist.github.com/leriomaggio/aef46a144119544df37649e46b51d64c) using a functional approach.
In this talk, we will discuss Python's support to functional programming, understanding the meaning of _pure functions_ (also _why mutable function parameters are **always** a bad idea_), and Python classes and modules that would help you in this style, namely `itertools`, `functools`, `map-reduce` data processing pattern.
As for reference data challenges, we will discuss _functional-style_ solutions to [Advent of Code](https://adventofcode.com/) coding puzzles, to make it fun, and interactive.