summaryrefslogtreecommitdiff
path: root/advanced_python/only_kwargs.tex
diff options
context:
space:
mode:
authorPrabhu Ramachandran2017-11-13 13:54:23 +0530
committerPrabhu Ramachandran2017-11-13 13:54:23 +0530
commit3150557cb953c95ef3e57cce356ea0196f3183ff (patch)
tree1f52128db7574dd227f68eb9d91ccf0c1aca5d2b /advanced_python/only_kwargs.tex
parentf43af0023d3a70ecebb18e0c18cebcffdd4ca21c (diff)
downloadpython-workshops-3150557cb953c95ef3e57cce356ea0196f3183ff.tar.gz
python-workshops-3150557cb953c95ef3e57cce356ea0196f3183ff.tar.bz2
python-workshops-3150557cb953c95ef3e57cce356ea0196f3183ff.zip
Split only_kwarg_closure into two.
Diffstat (limited to 'advanced_python/only_kwargs.tex')
-rw-r--r--advanced_python/only_kwargs.tex102
1 files changed, 102 insertions, 0 deletions
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}