summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrabhu Ramachandran2017-11-13 13:54:23 +0530
committerPrabhu Ramachandran2017-11-13 13:54:23 +0530
commit3150557cb953c95ef3e57cce356ea0196f3183ff (patch)
tree1f52128db7574dd227f68eb9d91ccf0c1aca5d2b
parentf43af0023d3a70ecebb18e0c18cebcffdd4ca21c (diff)
downloadpython-workshops-3150557cb953c95ef3e57cce356ea0196f3183ff.tar.gz
python-workshops-3150557cb953c95ef3e57cce356ea0196f3183ff.tar.bz2
python-workshops-3150557cb953c95ef3e57cce356ea0196f3183ff.zip
Split only_kwarg_closure into two.
-rw-r--r--advanced_python/Makefile3
-rw-r--r--advanced_python/closures.tex (renamed from advanced_python/only_kwarg_closure.tex)79
-rw-r--r--advanced_python/only_kwargs.tex102
3 files changed, 106 insertions, 78 deletions
diff --git a/advanced_python/Makefile b/advanced_python/Makefile
index 6bbe2f5..a9d95d2 100644
--- a/advanced_python/Makefile
+++ b/advanced_python/Makefile
@@ -7,7 +7,8 @@
SLIDES= intro.pdf \
names_objects.pdf \
varargs_kwargs.pdf \
- only_kwarg_closure.pdf
+ only_kwargs.pdf \
+ closures.pdf
all: $(SLIDES)
diff --git a/advanced_python/only_kwarg_closure.tex b/advanced_python/closures.tex
index 0d052e0..1c17c7b 100644
--- a/advanced_python/only_kwarg_closure.tex
+++ b/advanced_python/closures.tex
@@ -2,8 +2,8 @@
\input{macros.tex}
-\title[only kwargs]{Advanced Python}
-\subtitle{Keyword-only args and closures}
+\title[Closures]{Advanced Python}
+\subtitle{Closures}
\author[FOSSEE] {The FOSSEE Group}
@@ -19,87 +19,12 @@
\begin{frame}
\frametitle{Overview}
\begin{itemize}
- \item Only-keyword arguments
\item Higher-order functions
\item Closures
\end{itemize}
\end{frame}
\begin{frame}[fragile]
- \frametitle{Motivation}
- \begin{itemize}
- \item One can mix positional and keyword arguments
- \end{itemize}
- \begin{lstlisting}
-In []: def f(a, b=2):
- ...: print(a, b)
-
-In []: f(a=2, b=3)
-2 3
-
-In []: f(b=2, a=3)
-3 2
-
-In []: f(10, 20)
-1 2
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Motivation}
- \begin{itemize}
- \item Function changes: positional arguments change in order or number
- \item Accidentally passing an extra argument
- \item Can we have purely keyword arguments?
-
- \vspace*{0.5in}
- \item Yes, in Python 3.x!
- \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Keyword-only arguments}
- \begin{lstlisting}
-In []: def f(a, *args, b=False):
- ...: print(a, args, b)
-
-In []: f(1, 20)
-1 (20,) False
-
-In []: f(1, b=20)
-1 () 20
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Keyword-only arguments}
- \noindent Without any extra arguments:
-\vspace*{0.25in}
- \begin{lstlisting}
-In []: def f(a, *, b=False):
- ...: print(a, b)
-
-In []: f(1, 20)
-TypeError: f() takes 1 positional arg...
-\end{lstlisting}
-\pause
- \begin{lstlisting}
-In []: f(1, b=20)
-1 20
- \end{lstlisting}
-\end{frame}
-
-\begin{frame}
- \frametitle{Discussion}
- \begin{itemize}
- \item Solves the problem nicely
- \item \typ{b}: can only be specified as keyword argument
-
- \item Cannot be called as a positional argument
- \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
\frametitle{Recap of higher-order functions}
\begin{lstlisting}
In []: def sqr(x):
diff --git a/advanced_python/only_kwargs.tex b/advanced_python/only_kwargs.tex
new file mode 100644
index 0000000..f812812
--- /dev/null
+++ b/advanced_python/only_kwargs.tex
@@ -0,0 +1,102 @@
+\documentclass[14pt,compress]{beamer}
+
+\input{macros.tex}
+
+\title[only kwargs]{Advanced Python}
+\subtitle{Keyword-only arguments}
+
+\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 Only-keyword arguments
+ \item Higher-order functions
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Motivation}
+ \begin{itemize}
+ \item One can mix positional and keyword arguments
+ \end{itemize}
+ \begin{lstlisting}
+In []: def f(a, b=2):
+ ...: print(a, b)
+
+In []: f(a=2, b=3)
+2 3
+
+In []: f(b=2, a=3)
+3 2
+
+In []: f(10, 20)
+1 2
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Motivation}
+ \begin{itemize}
+ \item Function changes: positional arguments change in order or number
+ \item Accidentally passing an extra argument
+ \item Can we have purely keyword arguments?
+
+ \vspace*{0.5in}
+ \item Yes, in Python 3.x!
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Keyword-only arguments}
+ \begin{lstlisting}
+In []: def f(a, *args, b=False):
+ ...: print(a, args, b)
+
+In []: f(1, 20)
+1 (20,) False
+
+In []: f(1, b=20)
+1 () 20
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Keyword-only arguments}
+ \noindent Without any extra arguments:
+\vspace*{0.25in}
+ \begin{lstlisting}
+In []: def f(a, *, b=False):
+ ...: print(a, b)
+
+In []: f(1, 20)
+TypeError: f() takes 1 positional arg...
+\end{lstlisting}
+\pause
+ \begin{lstlisting}
+In []: f(1, b=20)
+1 20
+ \end{lstlisting}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Discussion}
+ \begin{itemize}
+ \item Solves the problem nicely
+ \item \typ{b}: can only be specified as keyword argument
+
+ \item Cannot be called as a positional argument
+ \end{itemize}
+\end{frame}
+
+
+\end{document}