summaryrefslogtreecommitdiff
path: root/basic_python/slides/func.tex
diff options
context:
space:
mode:
authorJovina2011-09-19 16:52:15 +0530
committerJovina2011-09-19 16:52:15 +0530
commitb50e99f58a8ffc40b977120dd486eb0513aa3b8b (patch)
tree910e8e17b5e404b1511a2daf988dfd32a5664e15 /basic_python/slides/func.tex
parentc8dbfd6beae678d309a4a45328f24763afeac078 (diff)
downloadsees-b50e99f58a8ffc40b977120dd486eb0513aa3b8b.tar.gz
sees-b50e99f58a8ffc40b977120dd486eb0513aa3b8b.tar.bz2
sees-b50e99f58a8ffc40b977120dd486eb0513aa3b8b.zip
Modified slides of 'basic Python' and 'Advanced Python' .
Diffstat (limited to 'basic_python/slides/func.tex')
-rw-r--r--basic_python/slides/func.tex222
1 files changed, 127 insertions, 95 deletions
diff --git a/basic_python/slides/func.tex b/basic_python/slides/func.tex
index f0ed1a5..b66be06 100644
--- a/basic_python/slides/func.tex
+++ b/basic_python/slides/func.tex
@@ -20,11 +20,12 @@
\item Let's write a Python function, equivalent to this
\end{itemize}
\begin{lstlisting}
- def f(x):
- return x*x
+ In[]: def f(x):
+ ....: return x*x
+ ....:
- f(1)
- f(2)
+ In[]: f(1)
+ In[]: f(2)
\end{lstlisting}
\begin{itemize}
\item \texttt{def} is a keyword
@@ -38,10 +39,11 @@
\begin{frame}[fragile]
\frametitle{Defining functions \ldots}
\begin{lstlisting}
- def greet():
- print "Hello World!"
+ In[]: def greet():
+ ....: print "Hello World!"
+ ....:
- greet()
+ In[]: greet()
\end{lstlisting}
\begin{itemize}
\item \texttt{greet} is a function that takes no arguments
@@ -49,10 +51,11 @@
\item But implicitly, Python returns \texttt{None}
\end{itemize}
\begin{lstlisting}
- def avg(a, b):
- return (a + b)/2
-
- avg(12, 10)
+ In[]: def avg(a, b):
+ ....: return (a + b)/2
+ ....:
+
+ In[]: avg(12, 10)
\end{lstlisting}
\end{frame}
@@ -63,14 +66,15 @@
\item We write a doc-string along with the function definition
\end{itemize}
\begin{lstlisting}
- def avg(a, b):
- """ avg takes two numbers as input
- and returns their average"""
+ In[]: def avg(a, b):
+ """ avg takes two numbers as input
+ and returns their average"""
- return (a + b)/2
+ ....: return (a + b)/2
+ ....:
- avg?
- greet?
+ In[]: avg?
+ In[]: greet?
\end{lstlisting}
\end{frame}
@@ -81,19 +85,20 @@
\item Function needs to return two values
\end{itemize}
\begin{lstlisting}
- def circle(r):
- """returns area and perimeter of a
- circle given, the radius r"""
-
- pi = 3.14
- area = pi * r * r
- perimeter = 2 * pi * r
- return area, perimeter
-
- circle(4)
- a, p = circle(6)
- print a
- print p
+ In[]: def circle(r):
+ """returns area and perimeter of a
+ circle given, the radius r"""
+
+ ....: pi = 3.14
+ ....: area = pi * r * r
+ ....: perimeter = 2 * pi * r
+ ....: return area, perimeter
+ ....:
+
+ In[]: circle(4)
+ In[]: a, p = circle(6)
+ In[]: print a
+ In[]: print p
\end{lstlisting}
\begin{itemize}
\item Any number of values can be returned
@@ -103,24 +108,26 @@
\begin{frame}[fragile]
\frametitle{What? -- 1}
\begin{lstlisting}
- def what( n ):
- if n < 0: n = -n
- while n > 0:
- if n % 2 == 1:
- return False
- n /= 10
- return True
+ In[]: def what( n ):
+ ....: if n < 0: n = -n
+ ....: while n > 0:
+ ....: if n % 2 == 1:
+ ....: return False
+ ....: n /= 10
+ ....: return True
+ ....:
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{What? -- 2}
\begin{lstlisting}
- def what( n ):
- i = 1
- while i * i < n:
- i += 1
- return i * i == n, i
+ In[]: def what( n ):
+ ....: i = 1
+ ....: while i * i < n:
+ ....: i += 1
+ ....: return i * i == n, i
+ ....:
\end{lstlisting}
\end{frame}
@@ -129,50 +136,53 @@
\begin{frame}[fragile]
\frametitle{Default arguments}
\begin{lstlisting}
- round(2.484)
- round(2.484, 2)
+ In[]: round(2.484)
+ In[]: round(2.484, 2)
- s.split() # split on spaces
- s.split(';') # split on ';'
+ In[]: s.split() # split on spaces
+ In[]: s.split(';') # split on ';'
- range(10) # returns numbers from 0 to 9
- range(1, 10) # returns numbers from 1 to 9
- range(1, 10, 2) # returns odd numbers from 1 to 9
+ In[]: range(10) # returns numbers from 0 to 9
+ In[]: range(1, 10) # returns numbers from 1 to 9
+ In[]: range(1, 10, 2) # returns odd numbers from 1 to 9
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Default arguments \ldots}
\begin{lstlisting}
- def welcome(greet, name="World"):
- print greet, name
+ In[]: def welcome(greet, name="World"):
+ ....: print greet, name
+ ....:
- welcome("Hi", "Guido")
- welcome("Hello")
+ In[]: welcome("Hi", "Guido")
+ In[]: welcome("Hello")
\end{lstlisting}
\begin{itemize}
\item Arguments with default values, should be placed at the end
\item The following definition is \alert{WRONG}
\end{itemize}
\begin{lstlisting}
- def welcome(name="World", greet):
- print greet, name
+ In[]: def welcome(name="World", greet):
+ ....: print greet, name
+ ....:
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Keyword Arguments}
\begin{lstlisting}
- def welcome(greet, name="World"):
- print greet, name
+ In[]: def welcome(greet, name="World"):
+ ....: print greet, name
+ ....:
- welcome("Hello", "James")
+ In[]: welcome("Hello", "James")
- welcome("Hi", name="Guido")
+ In[]: welcome("Hi", name="Guido")
- welcome(name="Guido", greet="Hey")
+ In[]: welcome(name="Guido", greet="Hey")
- welcome(name="Guido", "Hey")
+ In[]: welcome(name="Guido", "Hey")
\end{lstlisting}
\end{frame}
@@ -192,39 +202,58 @@
\begin{frame}[fragile]
\frametitle{Arguments are local}
\begin{lstlisting}
- def change(q):
- q = 10
- print q
+ In[]: def change(q):
+ ....: q = 10
+ ....: print q
+ ....:
- change(1)
- print q
+ In[]: change(1)
+ In[]: print q
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Variables inside function are local}
\begin{lstlisting}
- n = 5
- def change():
- n = 10
- print n
- change()
- print n
+ In[]: n = 5
+ In[]: def change():
+ ....: n = 10
+ ....: print n
+ ....:
+ In[]: change()
+ In[]: print n
\end{lstlisting}
\begin{itemize}
\item Use the \texttt{global} statement to assign to global variables
\end{itemize}
\begin{lstlisting}
- def change():
- global n
- n = 10
- print n
- change()
- print n
+ In[]: def change():
+ ....: global n
+ ....: n = 10
+ ....: print n
+ ....:
+ In[]: change()
+ In[]: print n
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
+ \frametitle{global}
+ \begin{itemize}
+ \item Use the \texttt{global} statement to assign to global variables
+ \end{itemize}
+ \begin{lstlisting}
+ In[]: def change():
+ ....: global n
+ ....: n = 10
+ ....: print n
+ ....:
+ In[]: change()
+ In[]: print n
+ \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
\frametitle{Mutable variables}
\begin{itemize}
\item Behavior is different when assigning to a list element/slice
@@ -232,31 +261,34 @@
until the name is found
\end{itemize}
\begin{lstlisting}
- name = ['Mr.', 'Steve', 'Gosling']
- def change_name():
- name[0] = 'Dr.'
- change_name()
- print name
+ In[]: name = ['Mr.', 'Steve', 'Gosling']
+ In[]: def change_name():
+ ....: name[0] = 'Dr.'
+ ....:
+ In[]: change_name()
+ In[]: print name
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Passing Arguments \ldots}
\begin{lstlisting}
- n = 5
- def change(n):
- n = 10
- print "n = %s inside change " %n
- change(n)
- print n
+ In[]: n = 5
+ In[]: def change(n):
+ ....: n = 10
+ ....: print "n = %s inside change " %n
+ ....:
+ In[]: change(n)
+ In[]: print n
\end{lstlisting}
\begin{lstlisting}
- name = ['Mr.', 'Steve', 'Gosling']
- def change_name(n):
- n[0] = 'Dr.'
- print "n = %s inside change_name" %n
- change_name(name)
- print name
+ In[]: name = ['Mr.', 'Steve', 'Gosling']
+ In[]: def change_name(n):
+ ....: n[0] = 'Dr.'
+ ....: print "n = %s inside change_name" %n
+ ....:
+ In[]: change_name(name)
+ In[]: print name
\end{lstlisting}
\end{frame}