From b64d87addfc4b90e3a2c93763eff8faf1e7cee21 Mon Sep 17 00:00:00 2001
From: Prabhu Ramachandran
Date: Fri, 17 Nov 2017 23:03:18 +0530
Subject: Rename the files for easier navigation.

---
 advanced_python/5_closures.tex | 105 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 105 insertions(+)
 create mode 100644 advanced_python/5_closures.tex

(limited to 'advanced_python/5_closures.tex')

diff --git a/advanced_python/5_closures.tex b/advanced_python/5_closures.tex
new file mode 100644
index 0000000..f3571ef
--- /dev/null
+++ b/advanced_python/5_closures.tex
@@ -0,0 +1,105 @@
+\documentclass[14pt,compress,aspectratio=169]{beamer}
+
+\input{macros.tex}
+
+\title[Closures]{Advanced Python}
+\subtitle{Closures}
+
+\author[FOSSEE] {The FOSSEE Group}
+
+\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
+\date[] {Mumbai, India}
+
+\begin{document}
+
+\begin{frame}
+  \titlepage
+\end{frame}
+
+\begin{frame}
+  \frametitle{Overview}
+  \begin{itemize}
+  \item Higher-order functions
+  \item Closures
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Recap of higher-order functions}
+  \begin{lstlisting}
+In []: def sqr(x):
+  ...:    return x*x
+
+In []: def sum(func, n):
+  ...:     result = 0
+  ...:     for i in range(n):
+  ...:         result += func(i)
+  ...:     return result
+
+In []: sum(sqr, 5)
+Out[]: 30
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Recap of higher-order functions}
+  \begin{lstlisting}
+def f():
+    def g(x):
+        return x+1
+    return g
+
+In []: func = f()
+In []: func(1)
+In []: f()(1)  # Also valid!
+  \end{lstlisting}
+\end{frame}
+
+
+\begin{frame}[fragile]
+  \frametitle{Closures}
+  \begin{lstlisting}
+def mul(x):
+    def g(y):
+        return y*x
+    return g
+
+In []: twice = mul(2.0)
+In []: twice(20)
+Out[]: 40.0
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Closures ...}
+  \begin{lstlisting}
+
+In []: thrice = mul(3.0)
+In []: thrice(20)
+Out[]: 60.0
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Discussion}
+  \begin{itemize}
+  \item \typ{g} uses \typ{x}
+  \item \typ{x} is different in each case
+  \item So \typ{twice, thrice} ``curry'' the passed \typ{x}
+  \item This function is called a closure
+  \item Encloses its local environment
+  \end{itemize}
+\end{frame}
+
+
+\begin{frame}[fragile]
+  \frametitle{Summary: Higher-order functions}
+  \begin{itemize}
+  \item Functions that manipulate functions
+  \item Passing a function as an argument
+  \item A function that returns another function
+  \item A closure
+  \end{itemize}
+\end{frame}
+
+\end{document}
-- 
cgit 

