-
Notifications
You must be signed in to change notification settings - Fork 1
/
sec_appendix.tex
248 lines (239 loc) · 8.14 KB
/
sec_appendix.tex
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
\section{classe et variable 'self'}
%...............................................................................
\begin{frame}[fragile]
\frametitle{Classe exemples avec self}
\begin{itemize}
\item Dans le corps de la classe, 'self' n'est pas défini.
\end{itemize}
\begin{pythonConsole}
class Canard():
... self.a = 10
...
Traceback (most recent call last):
File £"£<stdin>£"£, line 1, £in£ <module>
File £"£<stdin>£"£, line 2, £in£ Canard
NameError: name £'self'£ £is not£ defined
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{Classe exemples avec self}
\begin{itemize}
\item Dans une méthode seul self.nomAttribut est accessible.
\end{itemize}
\begin{pythonConsole}
class Canard():
... a = 10
... def __init__(self):
... self.b = 100
... print(self.a)
... print(b)
...
riri = Canard()
10
Traceback (most recent call last):
File £"£<stdin>£"£, line 1, £in£ <module>
File £"£<stdin>£"£, line 6, £in£ __init__
NameError: £global£ name £'b'£ £is not£ defined
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{Classe exemples avec self}
\begin{itemize}
\item 'self' est conventionnel.
\item Le premier paramètre d'une méthode est considéré comme l'objet lui même.
\end{itemize}
\begin{pythonConsole}
class Canard():
... def __init__(obj):
... obj.a = 10
... print(obj.a)
...
riri = Canard()
10
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{Classe exemples avec self}
\begin{itemize}
\item Possibilité de rajouter des arguments optionnels lors de l'instanciation d'un objet.
\end{itemize}
\begin{pythonConsole}
class Canard():
... def __init__(self, patte=2):
... self.a = patte
... print(self.a)
...
riri = Canard(patte=3)
3
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{Transposition NDarray exemple 3D}
\begin{itemize}
\item A.shape (1, 2, 3, 4)
\item A.T.shape (4, 3, 2, 1) by default.
\item can set the axes order. see help(numpy.matrix.transpose)
\end{itemize}
\begin{pythonConsole}
>>> A = numpy.array([[[[1, 2, 3, 4], [11, 12, 13, 14], [21, 22, 23, 24]],
[[101, 102, 103, 104], [111, 112, 113, 114], [121, 122, 123, 124]]]])
>>> A
array([[[[ 1, 2, 3, 4],
[ 11, 12, 13, 14],
[ 21, 22, 23, 24]],
[[101, 102, 103, 104],
[111, 112, 113, 114],
[121, 122, 123, 124]]]])
>>> A.T
array([[[[ 1],
[101]],
...
[[ 24],
[124]]]])
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{Identity of an object}
\begin{itemize}
\item Return the identity of an object.
This is guaranteed to be unique among simultaneously existing objects.
(CPython uses the object's memory address.)
\end{itemize}
\begin{pythonConsole}
>>> a = 123
>>> id(a)
4297541856
>>> id(123)
4297541856
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{Order of definition in a module}
\begin{itemize}
\item L'ordre de définition des fonctions n'est pas important à partir du moment où lors de leurs utilisations, celles-ci ont été définies.
C'est particulièrement fréquents dans les modules.
\end{itemize}
\begin{pythonConsole}
>>> def f(a):
... g(a)
>>> def g(b):
... print(b)
>>> a='abc'
>>> f(a)
abc
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{Order of definition in a module}
\begin{itemize}
\item l'ordre de définition des fonctions n'est pas important à partir du moment où lors de l'utilisation es focntions ont été définies.
Fonctionne dans la console ou dans un module.
\end{itemize}
\begin{pythonConsole}
>>> def f(a):
>>> g(a)
>>> def g(b):
>>> print(b)
>>> a='abc'
>>> f(a)
abc
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{slice and ellipsis}
\begin{itemize}
\item l'ellipse
\end{itemize}
\begin{pythonConsole}
>>> A = arange(24).reshape(2, 3, 4)
>>> A
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
>>> A[:,0]
array([[ 0, 1, 2, 3],
[12, 13, 14, 15]])
>>> A[...,0]
array([[ 0, 4, 8],
[12, 16, 20]])
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{slice and ellipsis}
\begin{itemize}
\item A[i, ...] est identique à A[i, :, :, etc.].
\item A[i, :] est identique à A[i, :, :, etc. ], donc identique à ...
\item A[:, i, :] = A[..., i, :] dans l'exemple mais
\item A[..., 0] est différent de A[:, 0] car ici c'est A[:, 0, :] et non A[:, :, 0] !
\end{itemize}
\begin{pythonConsole}
>>> A = arange(12).reshape(2, 3, 2)
>>> A
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]]])
>>> A[:,0] >>> A[:,0,:]
array([[0, 1], array([[0, 1],
[6, 7]]) [6, 7]])
>>> A[...,0]
array([[ 0, 2, 4],
[ 6, 8, 10]])
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}[fragile]
\frametitle{Zen of Python - Pythonic}
\begin{scriptsize}
Thanks to Branislav Gerazov (Branko) in regard to his friendly mail about this presentation: \emph{\dots one thing that I find awesome in Python it's its emphasis on aesthetics and readability. On this note I would add the Zen of Python ('import this') and the concept of being 'pythonic', and contrast it to Perl which is the most awful computer language in the world (I am recoding something now from Perl and that --- is really frustrating!). In this sense I've had students often saying they love Python \dots}
\end{scriptsize}
\begin{pythonConsole}
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
...
>>> # a pythonic list comprehension for example !
>>> list_of_number = [(i, 2*i, 3*i) for i in range(10)]
>>> list_of_number
[(0, 0, 0), (1, 2, 3), (2, 4, 6), (3, 6, 9), (4, 8, 12), (5, 10, 15),
(6, 12, 18), (7, 14, 21), (8, 16, 24), (9, 18, 27)]
\end{pythonConsole}
\end{frame}
%...............................................................................
%...............................................................................
\begin{frame}
\frametitle{Lien Patricia Ladret}
\begin{itemize}
\item Cours d'une collègue Patricia Ladret pour Python via Anaconda:
\url{http://chamilo1.grenet.fr/ujf/courses/FAMILIARISATIONAVECPYTHONSUITEANACON/index.php}
\end{itemize}
\end{frame}
%...............................................................................