diff options
author | Prabhu Ramachandran | 2018-05-15 21:27:57 +0530 |
---|---|---|
committer | Prabhu Ramachandran | 2018-05-15 21:27:57 +0530 |
commit | 9132e564c5f28f1b10d66d8323ad765f9d914231 (patch) | |
tree | 677edccb6687c8d13f1b3914c896c3a6e8ea55cd /advanced_python/04_only_kwargs.tex | |
parent | e805f9daa6c91a88fe7c0106db32369b457eda63 (diff) | |
download | python-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.tex | 95 |
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} |