summaryrefslogtreecommitdiff
path: root/advanced_python/04_only_kwargs.tex
diff options
context:
space:
mode:
authorPrabhu Ramachandran2018-05-15 21:27:57 +0530
committerPrabhu Ramachandran2018-05-15 21:27:57 +0530
commit9132e564c5f28f1b10d66d8323ad765f9d914231 (patch)
tree677edccb6687c8d13f1b3914c896c3a6e8ea55cd /advanced_python/04_only_kwargs.tex
parente805f9daa6c91a88fe7c0106db32369b457eda63 (diff)
downloadpython-workshops-9132e564c5f28f1b10d66d8323ad765f9d914231.tar.gz
python-workshops-9132e564c5f28f1b10d66d8323ad765f9d914231.tar.bz2
python-workshops-9132e564c5f28f1b10d66d8323ad765f9d914231.zip
Cleanup the numbering for advanced slides.
Diffstat (limited to 'advanced_python/04_only_kwargs.tex')
-rw-r--r--advanced_python/04_only_kwargs.tex95
1 files changed, 95 insertions, 0 deletions
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}