% Created 2010-10-11 Mon 00:34
\documentclass[presentation]{beamer}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fixltx2e}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{soul}
\usepackage{textcomp}
\usepackage{marvosym}
\usepackage{wasysym}
\usepackage{latexsym}
\usepackage{amssymb}
\usepackage{hyperref}
\tolerance=1000
\usepackage[english]{babel} \usepackage{ae,aecompl}
\usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet}
\usepackage{listings}
\lstset{language=Python, basicstyle=\ttfamily\bfseries,
commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
showstringspaces=false, keywordstyle=\color{blue}\bfseries}
\providecommand{\alert}[1]{\textbf{#1}}

\title{Advanced features of functions}
\author{FOSSEE}
\date{}

\usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent}
\begin{document}

\maketitle









\begin{frame}
\frametitle{Outline}
\label{sec-1}

\begin{itemize}
\item Assigning default values to arguments
\item Calling functions using Keyword arguments
\item functions in standard library
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Question 1}
\label{sec-2}

  Redefine the function \texttt{welcome}, by interchanging it's
  arguments. Place the \texttt{name} argument with it's default value of
  ``World'' before the \texttt{greet} argument.
\end{frame}
\begin{frame}[fragile]
\frametitle{Solution 1}
\label{sec-3}

\lstset{language=Python}
\begin{lstlisting}
def welcome(name="World", greet):
    print greet, name
\end{lstlisting}
  We get an error that reads \texttt{SyntaxError: non-default argument   follows default argument}. When defining a function all the
  argument with default values should come at the end.
\end{frame}
\begin{frame}
\frametitle{Question 2}
\label{sec-4}

  See the definition of linspace using \texttt{?} and observe how all the
  arguments with default values are towards the end.
\end{frame}
\begin{frame}[fragile]
\frametitle{Solution 2}
\label{sec-5}

\lstset{language=Python}
\begin{lstlisting}
linspace?
\end{lstlisting}
\end{frame}
\begin{frame}
\frametitle{Question 3}
\label{sec-6}

  Redefine the function \texttt{welcome} with a default value of
  ``Hello'' to the \texttt{greet} argument. Then, call the function without any
  arguments. 
\end{frame}
\begin{frame}[fragile]
\frametitle{Solution 3}
\label{sec-7}

\lstset{language=Python}
\begin{lstlisting}
def welcome(greet="Hello", name="World"):
    print greet, name

welcome()
\end{lstlisting}
\end{frame}
\begin{frame}
\frametitle{Summary}
\label{sec-8}

  You should now be able to --
\begin{itemize}
\item define functions with default arguments
\item call functions using keyword arguments
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Thank you!}
\label{sec-9}

  \begin{block}{}
  \begin{center}
  This spoken tutorial has been produced by the
  \textcolor{blue}{FOSSEE} team, which is funded by the 
  \end{center}
  \begin{center}
    \textcolor{blue}{National Mission on Education through \\
      Information \& Communication Technology \\ 
      MHRD, Govt. of India}.
  \end{center}  
  \end{block}
\end{frame}

\end{document}
