From 9132e564c5f28f1b10d66d8323ad765f9d914231 Mon Sep 17 00:00:00 2001
From: Prabhu Ramachandran
Date: Tue, 15 May 2018 21:27:57 +0530
Subject: Cleanup the numbering for advanced slides.

---
 advanced_python/04_only_kwargs.tex | 95 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 95 insertions(+)
 create mode 100644 advanced_python/04_only_kwargs.tex

(limited to 'advanced_python/04_only_kwargs.tex')

diff --git a/advanced_python/04_only_kwargs.tex b/advanced_python/04_only_kwargs.tex
new file mode 100644
index 0000000..8d4caef
--- /dev/null
+++ b/advanced_python/04_only_kwargs.tex
@@ -0,0 +1,95 @@
+\documentclass[14pt,compress,aspectratio=169]{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}[fragile, plain]
+  \frametitle{Motivation}
+  \vspace*{-0.1in}
+  \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}
-- 
cgit 

