Mathieu Leduc-Hamel
Programmeur Python mais aussi:
Du haut de ma petite expérience Pythonesque et de ce notebook, j'aimerais vous faire aimer ce langage
Python est un langage de programmation objet, multi-paradigme et multi-plateformes. Il favorise la programmation impérative structurée et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.
In [15]:
from pyquery import PyQuery as pq
element = pq(url="http://www.python.org/2.7/license.html").find("img")[-1]
Image("http://www.python.org" + element.attrib["src"])
Out[15]:
In [17]:
Image("http://pytalent.zandstrasystems.com/Guido-van-Rossum_DO6GvRhi.jpg")
Out[17]:
Née aux Pays-Bas, en 1957
Complété un master en mathématiques en sciences informatiques à l'université d'Amsterdam
Soumet au ministère de la défense américaine une proposition d'un nouveau language de programmation en 1999 (Python...)
Possède le titre de dictateur bien aimé et à vie (BDFL)
Travail chez Dropbox depuis Janvier 2013.
A travaillé dans le passé chez:
Il en existe plus plusieurs centaines, soit:
Le plus récent PEP a être accepté l'a été cette semaine, le 22 octobre 2013.
http://www.python.org/dev/peps/pep-0453/
À propos de l'intégration de pip dans la librairie standard, un installateur de paquets Python.
Bravo à Donald Stufft !
In [4]:
from pyquery import PyQuery as pq
print(pq(url="http://www.python.org/dev/peps/pep-0020/")("#body-main").find("pre")[1].text)
In [13]:
import this
La première version publique de Python date de 1991.
À l'époque Guido était fortement influencé par le LISP et la programmation fonctionnelle.
0.9.0 - Février 1991
Première publication officielle sur alt.sources.
Python 1.0 - Janvier 1994
Guido travail au CNRI, Corporation for National Research Initiatives
* Ajout du lambda, map, filter et du reduce.
Python 2.0 - Octobre 16, 2000
* Ajout des listes par compréhension et du "garbage collector"
Python 2.1 - Avril 17, 2001
* Naissance de la PSF
Python 2.2 - Décembre 21, 2001
* Le langage évolue et rafine avec les "nested scope" (la portée des variables)
Python 2.3 - Juillet 29, 2003
* On gagne de la vitesse et on peut le savoir grâce à timeit !
Python 2.4 - Novembre 30, 2004
* Set fait son entrée
* Générateurs (pep 289)
* Décorateurs
Python 2.6 - Octobre 1, 2008
* On structure l'évolution des releases (pep 361) jusqu'à 3.0
* with et les context managers
* multiprocessing
Python 2.7 - Juillet 3, 2010
* On backport des modules de Python 3.1
* Une release de transition
Selon "Nick Coghlan’s Python Notes" http://python-notes.boredomandlaziness.org/en/latest/python3/
et...
In [16]:
"évoluton du language"
Out[16]:
In [29]:
from IPython.core.display import HTML
HTML("<iframe src='https://python3wos.appspot.com/' height='600'></iframe>")
Out[29]:
In [6]:
from pyquery import PyQuery as pq
base_url = "http://docs.python.org/release/%s/modindex.html"
new_url = "http://docs.python.org/release/%s/py-modindex.html"
newer_url = "http://docs.python.org/%s/py-modindex.html"
data = {}
def count_modules(version, dt=False, old=True, newer=False):
if dt:
data[version] = len(pq(url=base_url % version).find("table dt"))
elif old:
data[version] = len(pq(url=base_url % version).find("table tt"))
elif newer:
data[version] = len(pq(url=newer_url % version).find("table tt"))
else:
data[version] = len(pq(url=new_url % version).find("table tt"))
return data
for v in range(1, 6):
count_modules("2.%d" % v, dt=True)
count_modules("2.6")
count_modules("2.7")
count_modules("3.0")
count_modules("3.1")
count_modules("3.2", old=False)
print(count_modules("3.3", old=False, newer=True))
In [14]:
%pylab inline --no-import-all
from pylab import figure, plot, title, xlabel, ylabel, show
x = data.keys()
x.sort()
y = [data[k] for k in x]
figure()
plot(x, y, 'r')
xlabel('Version de Python')
ylabel('Nombre de modules')
title(u'Évolution du nombre de modules dans les STD Python')
show()
PyPY 1.0 - Juin 2007
Une complète ré-écriture de Python en Python. Le but de l'opération :
* implanter un compilateur Just-In-time (JIT)
* conserver la compabilité avec le CPython tradionnel
* créer une plateforme d'expérimentation pour les languages de programmation dynamiques
PyPY 1.2 - Mars 2010
PyPy 1.5 - Avril 2011
PyPy 1.9 - Mars 2012
PyPy 2.1 - Août 2013
In [35]:
from IPython.core.display import Image
import antigravity
Image("http://imgs.xkcd.com/comics/python.png")
Out[35]:
In [5]:
from pyquery import PyQuery as pq
len(pq(url="https://wiki.python.org/moin/LocalUserGroups").find(".table-of-contents li")) - 5
Out[5]:
In [2]:
from IPython.core.display import Image
Image("http://f.cl.ly/items/0h1A0d0e0t1L3j0R3i2W/pycon-2011-mp-org-team.jpg")
Out[2]:
"We are an international mentorship group with a focus on helping more women become active participants and leaders in the Python open-source community"
In [1]:
from pyquery import PyQuery as pq
len(pq(url="http://www.pyladies.com/locations/").find(".chapter_location"))
Out[1]:
In [31]:
from IPython.core.display import Image
Image("http://www.python.org/~guido/images/license.jpg")
Out[31]:
In [1]:
from IPython.core.display import Image
Image("http://apius.ca/images/27c4a580.mathieu.jpg")
Out[1]: