Python : Atelier intermédiaire
Sommaire
INTRODUCTION
- Objectifs :
- savoir coder ses propres objets
- utiliser la bibliothèque standard et des packages existants
NOTIONS INTERMÉDIAIRES
Orienté-objet et classes
Objet, instance de classe
Attributs et méthodes
- portée : de classe, d'objet
Héritage
- object
si classe hérite : init DOIT appeler init de parent
appel de méthode de parent : ClassParent.methode(self) # self = obligatoire
self
- représentation de l'objet (instance)
- le "this" de Java, PHP
CRUD
__init__
Décorateurs
Exceptions
Lambda
- lambda input: output
lambda x: x*2
Bibliothèque standard
- datetime
- re
- os.system
os.popen deprecated
import os f = os.popen("grep -rsn 'davin' .") f.read()
pour lancer un processus : subprocess
pour lancer n'importe quoi en shell (avec risques qui viennent avec): commands
- os.path
- pickle
- sqlite3
- zlib
- csv
- json
- uuid
- urllib
- gettext
- pdb
- sys
pwd
# http://www.python.org/doc/lj21.html import posix import pwd pwd.getpwall() print 'hello', pwd.getpwuid(posix.getuid())[0] # progfou: et autre détail non négligeable pour nous à l'AuF : pwd fait des appels à la libc, qui passe par NSS, donc ça donne aussi les comptes réseau
socket
# socket.getaddrinfo pour faire de la résolution DNS import socket socket.getaddrinfo('smtp.sn.auf.org', 25)
Packages
- pypi
numpy, scipy
# fonctions d'optimisation def f(x) : return x**3 - x**2 -10 from scipy import optimize optimize.fsolve(f, 1)
Python African Tour (Dakar, 2009) : Informatique scientifique avec Python
- android
Tutoriel en français (2009)
- nltk
- jabberbot
- django
- auf.django.references
- autres
import pyo s = Server().boot() s.start() wav = SquareTable() env = CosTable([(0,0), (100,1), (500,.3), (8191,0)]) met = Metro(.125, 12).play() amp = TrigEnv(met, table=env, mul=.1) pit = TrigXnoiseMidi(met, dist='loopseg', x1=20, scale=1, mrange=(48,84)) out = Osc(table=wav, freq=pit, mul=amp).out() s.stop()
EXERCICE
- modifier iptables
- créer un bot jabber
CONCLUSION
- ne pas réinventer la roue : utiliser l'existant
- DIY (do-it-yourself) : pour le reste, faites du "sur mesure"
- yalla!