summaryrefslogtreecommitdiff
path: root/advanced_features_of_functions/slides.org
blob: 947b3063ece1a025931e0a2c2ea1a1c194650d96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#+LaTeX_CLASS: beamer
#+LaTeX_CLASS_OPTIONS: [presentation]
#+BEAMER_FRAME_LEVEL: 1

#+BEAMER_HEADER_EXTRA: \usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent}
#+COLUMNS: %45ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Env Args) %4BEAMER_col(Col) %8BEAMER_extra(Extra)
#+PROPERTY: BEAMER_col_ALL 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 :ETC

#+LaTeX_CLASS: beamer
#+LaTeX_CLASS_OPTIONS: [presentation]

#+LaTeX_HEADER: \usepackage[english]{babel} \usepackage{ae,aecompl}
#+LaTeX_HEADER: \usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet}

#+LaTeX_HEADER: \usepackage{listings}

#+LaTeX_HEADER:\lstset{language=Python, basicstyle=\ttfamily\bfseries,
#+LaTeX_HEADER:  commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
#+LaTeX_HEADER:  showstringspaces=false, keywordstyle=\color{blue}\bfseries}

#+TITLE:    
#+AUTHOR:    FOSSEE
#+EMAIL:     
#+DATE:    

#+DESCRIPTION: 
#+KEYWORDS: 
#+LANGUAGE:  en
#+OPTIONS:   H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS:   TeX:t LaTeX:nil skip:nil d:nil todo:nil pri:nil tags:not-in-toc

* 
#+begin_latex
\begin{center}
\vspace{12pt}
\textcolor{blue}{\huge Advanced features of Functions}
\end{center}
\vspace{18pt}
\begin{center}
\vspace{10pt}
\includegraphics[scale=0.95]{../images/fossee-logo.png}\\
\vspace{5pt}
\scriptsize Developed by FOSSEE Team, IIT-Bombay. \\ 
\scriptsize Funded by National Mission on Education through ICT\\
\scriptsize  MHRD,Govt. of India\\
\includegraphics[scale=0.30]{../images/iitb-logo.png}\\
\end{center}
#+end_latex
* Objectives
 At the end of this tutorial, you will be able to, 

 - Assign default values to arguments, when defining functions.
 - Define and call functions with keyword arguments. 
 - Learn some of the built-in functions available in Python standard 
    library and the scientific computing libraries.
* Pre-requisite
Spoken tutorial on -
- Getting started with functions
* Functions
#+begin_src Python
s.strip() # strips on spaces. 
s.strip('@') # strips the string of '@' symbols.

plot(x, y) # plots with x vs. y using default line style. 
plot(x, y, 'o') # plots x vs. y with circle markers. 

linspace(0, 2*pi, 100) # returns 100 points between 0 and 2pi
linspace(0, 2*pi) # returns 50 points between 0 and 2pi
#+end_src
* Exercise 1
 - Redefine the function ~welcome~, by interchanging it's
  arguments.
  Place the ~name~ argument with it's default value of
  "World" before the ~greet~ argument.
* Solution 1
  #+begin_src python
    def welcome(name="World", greet):
        print greet, name
  #+end_src
  We get an error that reads ~SyntaxError: non-default argument follows 
  default argument~. When defining a function all the
  argument with default values should come at the end.

* Exercise 2
 - See the definition of linspace using ~?~ and make a note of all the
  arguments with default values are towards the end.
* Exercise 3
 - Redefine the function ~welcome~ with a default value of
  "Hello" to the ~greet~ argument. 
  Then, call the function without any arguments. 
* Keyword arguments examples
#+begin_src Python
legend(['sin(2y)'], loc = 'center')

plot(y, sin(y), 'g', linewidth = 2)

annotate('local max', xy = (1.5, 1))

pie(science.values(), labels = science.keys())
#+end_src
* Built-in functions
#+begin_src Python
  Math functions - abs, sin, ....
 
  Plot functions - plot, bar, pie ...
 
  Boolean functions - and, or, not ...
#+end_src
* Classes of functions
#+begin_src Python
- pylab
  - plot, bar, contour, boxplot, errorbar, log, polar, quiver, semilog

- scipy (modules)
  - fftpack, stats, linalg, ndimage, signal, optimize, integrate
#+end_src
* Summary
 In this tutorial, we have learnt to, 

 - Define functions with default arguments.
 - Call functions using keyword arguments.
 - Use the range of functions available in the Python standard library 
   and the Scientific Computing related packages. 

* Evaluation
1. All arguments of a function cannot have default values. 
   - True or False? 

2. The following is a valid function definition. True or False? 
#+begin_src Python
def seperator(count=40, char, show=False):
     if show:
          print char * count
     return char * count
#+end_src
3. When calling a function, 

   - the arguments should always be in the order in which they are defined.
   - only keyword arguments can be in any order, but should be called
     at the beginning.
   - only keyword arguments can be in any order, but should be called
     at the end.
* Solutions
1. False

2. False

3. only keyword arguments can be in any order, 
   but should be called at the end
* 
#+begin_latex
  \begin{block}{}
  \begin{center}
  \textcolor{blue}{\Large THANK YOU!} 
  \end{center}
  \end{block}
\begin{block}{}
  \begin{center}
    For more Information, visit our website\\
    \url{http://fossee.in/}
  \end{center}  
  \end{block}
#+end_latex