The document discusses applying functional programming concepts with Python. It begins with an introduction and agenda, then covers the differences between object-oriented and functional programming. It discusses functional concepts like avoiding state, immutable data, and higher-order functions. It provides examples of implementing functions imperatively versus functionally in Python using map, filter and reduce. The document also covers lazy evaluation, partial application, currying, and iterables. It notes some pros of Python for functional programming but also limitations like the lack of separating pure and impure functions. It acknowledges many functional concepts are not fully supported.