Atelier 2012-02-23 : Python : Atelier de base


INTRODUCTION


NOTIONS DE BASE

Interpréteur

$ ipython

Syntaxe

Variables

a = 12
b = a
id(a)
id(b)

Types

n = None        # NoneType : type spécial voulant dire... rien
b = True        # bool : booléen... True ou False n'oubliez pas les majuscules

i = 15          # int : entier
f = 15.5        # float : décimal

s = "chaine"    # str : chaine de caractère, instancié avec "" ou ''
u = u"chaîne"   # unicode : chaîne de caractère unicode, instancié avec u"" ou u''

l = []          # list : liste d'objets (ordonné)
t = ()          # tuple : liste immuable d'objets
d = {}          # dict : dictionnaire de données (unique, non-ordonné)

ens = set([])   # set : ensemble (unique, non-ordonné)

a, b = 34, 56

float(a)

Built-in : fonctions built-in et structure du langage

type()                  # retourne le type de l'objet
dir()                   # retourne les noms derrière l'objet
help()                  # retourne l'aide
callable()              # dit si un objet est appelable, exécutable...

bool(), int(), str()... # initialisation ou transtypage
getattr()
isinstance(objet, Type) # teste le classe (ou type) d'un objet
issubclass()
super()
len()
min()
max()
open()
range()
raw_input()

print
del

Objets et namespaces

Introspection

nom = "Davin Baragiotta"
prenom, nom = nom.split()
nom.upper()
nom.lower()
nom.ljust(30)
nom = [prenom.lower(), nom.lower()]
username = ".".join(nom)

nom = "Davin Baragiotta"
username = ".".join(nom.split()).lower()

users = []
users.append(username)

davin = {'prenom':'Davin', 'nom':'Baragiotta'}
pascal = {'prenom':'Pascal', 'nom':'Bou Nassar'}

personnes = []
personnes.append(davin)
personnes.append(pascal)

statuts = [
    (1, u'Nouveau'),
    (2, u'En cours'),
    (3, u'Rejeté'),
    (4, u'Retenu'),
]

Conteneurs

l = [[1,2,3],[4,'salut',6],[7,8,9]]

l[2], d['nom']

l[0:2]

personne = {'nom':'x', 'prenom':'y'}
personnes = []

Itération

annee = 2012
while annee <= 2015:
    print annee
    annee = annee + 1   # annee += 1

for i in range(2012, 2016):
    print i

Comparaisons et opérateurs logiques

Conditionnel

liste = range(6)
if 5 in liste:
    print 'hourra 5'
elif 4 in liste:
    print 'hourra 4'
else:
    print 'pas hourra'

Fichiers

f = open('texte.txt')
for line in f.readlines():
    print line,
f.close()

Formattage de chaînes de caractères

for n in range(10):
    print "La puissance 2 de %d est : %d" % (n, n**2)

for p in personnes:
    print "Bonjour %s %s" % (p['prenom'], p['nom'].upper())

Compréhension de liste

cible = 'egypte'
contexte = [ligne for ligne in f.readlines() if cible in ligne]
commentaires = [ligne for ligne in f.readlines() if l.startswith('#')]


Scripts

Fonctions

def age(annee_naissance):
    return 2012 - annee_naissance

def ma_fonction(param1, param2, param3=None, param4=0, *args, **kwargs):
    """Ceci est ma fonction."""
    output = True
    return output

Import

import sys
sys.path

import lib
mon_annee_naissance = 1975
lib.age(mon_annee_naissance)

Modules

Permanence de l'information

import pickle

f = open('pickles', 'w')
pickle.dump(statuts, f)
pickle.dump(personnes, f)
f.close()

exit()

import pickle

f = open('pickles')
objets = []
for obj in pickle.load(f):
    objets.append(obj)
f.close()

EXERCICE

CONCLUSION