Modifications entre les versions 1 et 17 (s'étendant sur 16 versions)
Version 1 à la date du 2012-02-22 18:30:02
Taille: 5247
Éditeur: DavinBaragiotta
Commentaire: Amorce
Version 17 à la date du 2012-02-24 02:16:18
Taille: 672
Éditeur: DavinBaragiotta
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
= Atelier 2012-02-23 : Python : Atelier de base = = Python : Atelier de base =
Ligne 3: Ligne 3:
<<TableOfContents(3)>> == Infos générales ==
Ligne 5: Ligne 5:
----  * Date/heure : jeudi 23 février 10h00 Alexandrie (EG)
 * Durée : 5 heures
 * Lieu : CNF Alexandrie
 * Présentateur : DavinBaragiotta
 * Format : Atelier présentiel
Ligne 7: Ligne 11:
== INTRODUCTION == == Description ==
Ligne 10: Ligne 14:
  * coder dans l'interpréteur et explorer les bases du langage
  * écrire un script qu'on fera exécuter par l'interpréteur
  * savoir coder ses propres objets
  * utiliser la bibliothèque standard et des packages existants
Ligne 13: Ligne 17:
 * Documentation
  * http://www.python.org/doc/
  * http://docs.python.org/tutorial/
  * http://docs.python.org/library/
== Pré-requis ==
Ligne 18: Ligne 19:
 * Environnement
  * éditeur texte
  * interpréteur python : python, ipython
  * sources :
   * http://montrealpython.org/r/projects/workshop-uqam-2011-11-17/wiki
   * http://montrealpython.org/r/attachments/2
=== Connaissances techniques ===
Ligne 25: Ligne 21:
----  * Bases en Python (minimales : connaître les types, savoir faire un script et un module)
Ligne 27: Ligne 23:
== NOTIONS DE BASE == === Environnement technique ===
Ligne 29: Ligne 25:
=== Interpréteur ===  * Python = 2.6
Ligne 31: Ligne 27:
 * python, ipython
 * interactivité / introspection
== Contenu de l'atelier ==
Ligne 34: Ligne 29:
{{{
$ ipython
}}}

=== Syntaxe ===

* commentaire : #
* variables : sans $
* instructions : sans ;
* blocs : sans {}
* style : PEP 8
http://www.python.org/dev/peps/pep-0008/
* bris de ligne : \

=== Variables ===

* nom, valeur, référence
{{{
a = 12
b = a
id(a)
id(b)
}}}

=== Types ===

* typage dynamique (pas besoin déclarer)
* import 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é)
}}}

* unpacking
{{{
a, b = 34, 56
}}}

* fortement typé (pas de transtypage implicite)
* transtypage
str(), int(), float(), bool(), list(), tuple(), dict(), set()
{{{
float(a)
}}}

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

http://docs.python.org/library/fonctions.html
{{{
type(objet) # retourne le type de l'objet
dir(objet) # retourne les noms derrière l'objet
help(objet) # retourne l'aide
callable(objet) # 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 ===

* objet.attribut
* objet.methode()
* objet.attribut.methode()

=== Introspection ===

* variable. [+ tab]
* variable?

* type()
* dir()
* help()

* exploration des types

* concaténation : s1 + s2

{{{
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)
}}}

=== Conteneurs ===

* imbrication : l = [[1,2,3],[4,'salut',6],[7,8,9]]
* index : l[2], d['nom']
* slicing : l[0:2]
* personne = {'nom':'x', 'prenom':'y'}
* personnes = []

=== Itération ===

for item in l:
    print item.upper()

        * while... while year < 2005:
        for
            2 à la puissance n
            sur string
            sur list

=== Comparaisons et opérateurs logiques ===

        false = 0, '', (), [], {}, None
        and, or, not
        < > <= >= == !=
        x < y <= z
        is, is not
        in, not in
        %

=== Conditionnel ===

if 5 in liste:
    print 'hourra 5'
elif 4 in liste:
    print 'hourra 4'
else:
    print 'pas hourra'

=== Fichiers ===

        * read files : open(), f.close()
         for line in open(‘hello.py’):
           print line,
         readlines

=== Formattage de chaînes de caractères ===

* %

=== Compréhension de liste ===

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

----

=== Scripts ===

* code/script.py
* shebang : #! /usr/bin/env python
* encoding : # -*- encoding: utf-8 -*-
* if __name__ == '__main__':
* raw_input()

=== Fonctions ===

* convention de nommage
* output : None par défaut
* input : paramètres positionnels, nommés, *args, **kwargs
* portée des variables

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

=== Import ===

* import module
* from module import nom
* from module import nom as mon_nom

* built-in : pas besoin d'import
* standard library (shipped in) : import sans install
* packages : importable si installé dans le path
$ import sys
$ sys.path

=== Modules ===

* __init__.py
* __name__ : nom du module, nom de fichier si importé, '__main__' si exécuté (utile pour tests)

=== Permanence de l'information ===

* fichiers
* sérialisation : import pickle
* DB : sqlite3, mysqldb, psycopg2
* ORM : sqlalchemy

== EXERCICE ==

== CONCLUSION ==

* documentation + interactivité + introspection
* scripts + modules
* enjoy!
 * [[/Plan|Plan et support de présentation de l'atelier]]

Python : Atelier de base

Infos générales

  • Date/heure : jeudi 23 février 10h00 Alexandrie (EG)
  • Durée : 5 heures
  • Lieu : CNF Alexandrie
  • Présentateur : DavinBaragiotta

  • Format : Atelier présentiel

Description

  • Objectifs :
    • savoir coder ses propres objets
    • utiliser la bibliothèque standard et des packages existants

Pré-requis

Connaissances techniques

  • Bases en Python (minimales : connaître les types, savoir faire un script et un module)

Environnement technique

  • Python = 2.6

Contenu de l'atelier

Ateliers/2012-02-23 (dernière édition le 2012-08-27 07:04:58 par DavinBaragiotta)