-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
215 lines (205 loc) · 7.06 KB
/
index.html
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
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Curs de Python</title>
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
<section>
<h2>Curs de Python</h2>
<pre><code class="python3" data-trim>
print "Welcome to Python" # Python 2
print("Welcome to Python3!") # Python 3
</code></pre>
</section>
<section>
<h2>Python for Java/C++ programmers</h2>
<p>Regular functions and basic statements</p>
<pre><code class="java" data-trim>
// Exemple Java
final void awesomeFunction(List<AwesomeType> awesomeVariable) {
awesomeStatement();
awesomeVariable.loremIpsum(3, new HashMap<AwesomeType>());
return new ArrayList<String>();
}
</code></pre>
<pre class="fragment"><code class="python" data-trim>
# Exemple Python
def awesome_function(awesome_variable):
awesome_statement()
awesome_variable.lorem_ipsum(3, dict())
return list()
</code></pre>
</section>
<section>
<h2>Python for Java/C++ programmers</h2>
<p>Code documentation</p>
<pre><code class="java" data-trim>
/**
* @brief Típica documentació, estil Javadoc (si no vaig errat).
* @param awesomeVariable Té valors impressionants.
* @return Una llista buida. Per què? Perquè sí.
*
* Més informació i documentació aquí!
*/
final void awesomeFunction(List<AwesomeType> awesomeVariable) {
...
</code></pre>
<pre class="fragment"><code class="python" data-trim>
def awesome_function(awesome_variable):
"""Típica documentació per a un mètode Python.
:param awesome_variable: Té valors impressionants.
:return: Una llista buida. Per què? Perquè sí.
Més informació i documentació aquí!
"""
...
</code></pre>
</section>
<section>
<h2>Python for Java/C++ programmers</h2>
<p><code>for</code> loops and conditionals</p>
<pre><code class="java"> for (String s : awesomeList) {
if (s.equals("AwesomeString")) {
break;
} else if (s.equals("NotAwesome")) {
continue;
}
c++;
}
</code></pre>
<pre class="fragment"><code class="python" > for s in awesome_list:
if s == "AwesomeString":
break
elif s == "NotAwesome":
continue
c += 1
</code></pre>
</section>
<section>
<h2>Duck Typing</h2>
<p>O també conegut com les tonteries del Barceló i els "patos"</p>
<pre><code class="python" data-trim>
# Codi Python
def feelsLikeList(l):
l.append(32)
if len(l) < 8:
l.append(42)
feelsLikeList(l)
return l[4]
</code></pre>
<span class="fragment">
<p>Relevància del tipus de <code>l</code>: cap</p>
<p>"Don't check whether it <b>IS-a duck</b>: check whether it <b>QUACKS-like-a duck</b>, <b>WALKS-like-a duck</b>, etc"</p>
</span>
</section>
<section>
<h2>Duck Typing</h2>
<p>A què venia això?</p><p><code>isinstance</code> is <b>evil</b></p>
<pre><code class="python" data-trim>
# Codi Python
def beingTooCautious(l):
assert isinstance(l, list) # Bad! anti-pythonic idiom!
...
</code></pre>
Si és imperatiu realitzar comprovacions, <code>try-catch</code>
<pre><code class="python" data-trim>
# Codi Python
def beingSafeAndPythonic(l):
try:
l.append(32)
except AttributeError:
# Gestionem aquí l'error
...
else:
# Tot ha anat bé
...
</code></pre>
</section>
<section> <!-- Python Ecosystem parent -->
<section>
<h2>Python Ecosystem</h2>
<p>Gran quantitat de recursos de tot tipus</p>
<ul>
<li>Documentació</li>
<li>Eines</li>
<li>Paquets i mòduls</li>
<li>Frameworks</li>
<li>Projectes</li>
</ul>
<p><i>Get ready for an opinionated list by Barceló</i></br><small>(o poseu-vos a dormir)</small></p>
</section>
<section>
<h2>Python Ecosystem</h2><h4>Documentació</h4>
<p>First and foremost: <a href="https://docs.python.org/" target="_blank">https://docs.python.org/</a></p>
<ul>
<li>El tutorial està molt bé</li>
<li>Brief Tour of the Standard Library és un bon repàs no-exhaustiu</li>
<li>La documentació de la Standard Library és més tècnica, però detallada i completa</li>
</ul>
<p>En general, la documentació és bona</br>Comproveu sempre la documentació oficial (GitHub, ReadTheDocs, etc.)</p>
</section>
<section>
<h2>Python Ecosystem</h2><h4>Eines</h4>
<img src="img/ipython.png" style="padding: 30px; background: white;"></img>
<p><b><code>iPython</code></b> És una consola interactiva útil i potent</p>
<p>(molt millor que l'intèrpret interactiu per defecte)</p>
</section>
<section>
<h2>Python Ecosystem</h2><h4>Eines</h4>
<div style="float: left;"><img src="img/pycharm.png"></img></div>
<div>
<p><b>PyCharm</b> És un IDE de programació, adequat per a projectes grans amb múltiples arxius</p>
</div>
</section>
<section>
<h2>Python Ecosystem</h2><h4>Eines</h4>
<p><code>virtualenv</code> - <b>Virtual Environments</b></p>
<p>Mecanisme per a tenir un <i>environment</i> aïllat</p>
<p>Útil tant per a <b>development</b> com per a deployments a <b>producció</b></p>
</section>
<section>
<h2>Python Ecosystem</h2><h4>Paquets i mòduls</h4>
<p><b>PyPI</b> the Python Package Index<br><a href="https://pypi.python.org/pypi">https://pypi.python.org/pypi</a></p>
<p><b>GitHub</b> Molts paquets, però pot ser "un pallar"</p>
<span class="fragment">
<hr />
<p>En general: <b>Mai reinventeu la roda</b></p>
<p>Si existeix un paquet que fa el que voleu, probablement ho faci millor que el que faríeu vosaltres</p>
<p>Si vosaltres ho feu millor: coŀlaboreu-hi</p>
</span>
</section>
</section> <!-- parent section of Python Ecosystem -->
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
history: true,
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'plugin/markdown/marked.js' },
{ src: 'plugin/markdown/markdown.js' },
{ src: 'plugin/notes/notes.js', async: true },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>