Skip to content

Aide-mémoire du langage Python

Python est un langage de programmation informatique multiplateforme. C’est un langage orienté objet à typage dynamique, conçu à l’origine pour l’écriture de scripts automatisés (shell). Avec la mise à jour continue des versions et l’ajout de nouvelles fonctionnalités, il est de plus en plus utilisé pour le développement de projets indépendants de grande envergure.

Général

  • Python est sensible à la casse
  • L’indexation Python commence à 0
  • Python utilise l’espace blanc (tabulations ou espaces) pour indenter le code au lieu d’utiliser des accolades.

Aide

Accueil de l’aide help()
Aide sur une fonction help(str.replace)
Aide sur un module help(re)

Modules (Bibliothèques)

Lister le contenu du module dir(module1)
Charger le module import module1 *
Appeler une fonction du module module1.func1()

L’instruction import crée un nouvel espace de noms et exécute toutes les instructions du fichier .py associé à cet espace de noms. Si vous souhaitez charger le contenu du module dans l’espace de noms actuel, utilisez “from module1 import *”

Types Scalaires

Vérifier le type de données : type(variable)

Entiers

int/long - Les grands entiers sont automatiquement convertis en entiers longs

Flottants

float - 64 bits, pas de type “double”

Booléens

bool - Vrai (True) ou Faux (False)

Chaînes de caractères (Strings)

str - Python 2.x par défaut : ASCII ; Python 3 : Unicode

  • Les chaînes peuvent être entre guillemets simples/doubles/triples
  • Une chaîne est une séquence de caractères, elle peut donc être traitée comme n’importe quelle autre séquence
  • Les caractères spéciaux peuvent être complétés en commençant par \ ou r
    str1 = r'this\f?ff'
  • Le formatage des chaînes peut être réalisé de plusieurs manières
    template = '%.2f %s haha $%d'
    str1 = template % (4.88, 'hola', 2)

str(), bool(), int() et float() sont également des fonctions de conversion de type explicites

Valeur Nulle

NoneType(None) - Valeur ’null’ de Python (une seule instance de l’objet None existe)

  • None n’est pas un mot-clé réservé, mais la seule instance de “NoneType”
  • None est une valeur par défaut courante pour les paramètres de fonction facultatifs :
    def func1(a, b, c = None)
  • Utilisation courante de None :
    if variable is None :

Date et Heure (Datetime)

datetime - Module “datetime” intégré à Python, fournissant les types “datetime”, “date”, “time”, etc.

  • “datetime” combine les informations stockées dans “date” et “time”
    Créer datetime à partir d’une chaîne dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’)
    Obtenir l’objet “date” dt1.date()
    Obtenir l’objet “time” dt1.time()
    Formater datetime en chaîne dt1.strftime(’%m/%d/%Y %H:%M’)
    Modifier les valeurs des champs dt2 = dt1.replace(minute = 0, second=30)
    Obtenir la différence diff = dt1 - dt2 # diff est un objet ‘datetime.timedelta’

Structures de Données

Tuples

Un tuple est une séquence de longueur fixe et immuable.

Créer un tuple tup1=4,5,6 ou tup1 = (6,7,8)
Créer un tuple imbriqué tup1 = (4,5,6), (7,8)
Convertir une séquence ou un itérateur en tuple tuple([1, 0, 2])
Concaténer des tuples tup1 + tup2
Déballer un tuple a, b, c = tup1
Échanger des variables b, a = a, b

Listes

Une liste est une séquence d’éléments de longueur variable et muable.

Créer une liste list1 = [1, ‘a’, 3] ou list1 = list(tup1)
Concaténer des listes list1 + list2 ou list1.extend(list2)
Ajouter à la liste list1.append(‘b’)
Insérer à une position spécifiée list1.insert(posIdx, ‘b’) **
Supprimer par index valueAtIdx = list1.pop(posIdx)
Supprimer la première occurrence d’une valeur list1.remove(‘a’)
Vérifier si une valeur existe dans la liste 3 in list1 => True ***
Trier la liste list1.sort()
Trier avec une fonction fournie par l’utilisateur list1.sort(key = len) # Trier par longueur

Remarque :

  • L’indice de “début” est inclus, mais l’indice de “fin” ne l’est pas.
  • début/fin peuvent être omis, par défaut au début/à la fin.

Slicing (Découpage)

Les types de séquence incluent ‘str’, ‘array’, ’tuple’, ’list’, etc.

list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]

Dictionnaires (Hashes)

Créer un dictionnaire dict1 ={‘key1’ :‘value1’, 2 :[3, 2]}
Construire un dictionnaire par fonction de mappage dict(zip(keyList, valueList))
Obtenir un élément dict1[‘key1’]
Modifier/Ajouter un élément dict1[‘key1’] = ’newValue’
Obtenir une valeur, sinon défaut dict1.get(‘key1’, defaultValue)
Vérifier si la clé existe ‘key1’ in dict1
Supprimer un élément del dict1[‘key1’]
Obtenir la liste des clés dict1.keys()
Obtenir la liste des valeurs dict1.values()
Mettre à jour les valeurs dict1.update(dict2) # valeurs de dict1 remplacées par dict2

Ensembles (Sets)

Un ensemble est une collection non ordonnée d’éléments uniques.

Créer un ensemble set([3, 6, 3]) ou {3, 6, 3}
Vérifier si set1 est un sous-ensemble de set2 set1.issubset(set2)
Vérifier si set2 est un sous-ensemble de set1 set1.issuperset(set2)
Vérifier si les ensembles sont identiques set1 == set2
Union (ou) set1
Intersection (et) set1 & set2
Différence set1 - set2
Différence symétrique (xor) set1 ^ set2

Fonctions

  • Forme de base

    def func1(posArg1, keywordArg1 = 1, ..):
  • Utilisation courante de “Les fonctions sont des objets” :

    def func1(ops = [str.strip, user_define_func, ..], ..):
        for function in ops:
            value = function(value)
  • Valeurs de retour

    • Si une fonction n’a pas d’instruction return à la fin, elle ne retourne aucune valeur.
    • Retourner plusieurs valeurs via un objet tuple
     return (value1, value2)
    
     value1, value2 = func1(..)
  • Fonctions anonymes (Lambda)

    lambda x : x * 2
    # def func1(x) : return x * 2

Fonctions couramment utilisées

  1. Enumerate retourne un tuple de séquence (clé, val), où clé est l’indice de l’élément actuel.

    for key, val in enumerate(collection):
  2. Sorted trie tous les objets itérables.

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip emballe les éléments correspondants des objets dans des tuples et retourne une liste de ces tuples.

    zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..]
  4. Reversed retourne un itérateur inversé.

    list(reversed(range(10)))

Contrôle et Flux

  1. Opérateurs pour les conditions “if else” :

    Vérifier si deux variables sont le même objet var1 is var2
    Vérifier si deux variables sont des objets différents var1 is not var2
    Vérifier si deux variables ont la même valeur var1 == var2
  2. Utilisation courante de l’opérateur for :

    for element in iterator :
  3. ‘pass’ - Ne fait rien, généralement utilisé comme instruction de remplissage.

  4. Expression ternaire

    value = true-expr if condition else false-expr
  5. Pas d’instruction switch/case, utilisez if/elif à la place.

Orientation Objet

  1. ‘object’ est la base de tous les types Python

  2. Tout (nombres, chaînes, fonctions, classes, modules, etc.) est un objet, et chaque objet possède un ’type’. Les variables d’objet sont des pointeurs vers leur emplacement en mémoire.

  3. Forme de base d’un objet

    class MyObject(object):
        # 'self' est l'équivalent de 'this' en Java/C++
        def __init__(self, name):
            self.name = name
    
        def memberFunc1(self, arg1):
            ..
    
        @staticmethod
        def classFunc2(arg1):
            ..
    
    obj1 = MyObject('name1') 
    obj1.memberFunc1('a') 
    MyObject.classFunc2('b')
  4. Outil interactif :

    dir(variable1) # Liste toutes les méthodes disponibles sur l'objet

Opérations sur les Chaînes

Joindre des listes/tuples à l’aide d’un délimiteur

', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'

Formater une chaîne

string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')

Diviser une chaîne

sep = '-'
stringList1 = string1.split(sep)

Obtenir une sous-chaîne

start = 1
string1[start:8]

Remplir une chaîne avec des zéros

month = '5'
month.zfill(2) => '05' 
month = '12'
month.zfill(2) => '12'

Gestion des Exceptions

  1. Forme de base
try:
    ..
except ValueError as e:
    print e
except (TypeError, AnotherError):
    ..
except:
    ..
finally:
    ..
  1. Lever des exceptions manuellement
raise AssertionError # Échec de l'assertion
raise SystemExit # Demande de sortie du programme
raise RuntimeError('Message d\'erreur : ..')

Compréhensions de Listes, Ensembles et Dictionnaires

Sucre syntaxique pour rendre le code plus facile à lire et à écrire.

  1. Compréhension de liste

    Forme de manière concise une nouvelle liste en filtrant les éléments d’une collection et en transformant les éléments qui passent le filtre en une seule expression.

    Forme de base

    [expr for val in collection if condition]

    Raccourci :

    result = []
    for val in collection:
        if condition:
            result.append(expr)

    La condition de filtre peut être omise, ne laissant que l’expression.

  2. Compréhension de dictionnaire

    {key-expr : value-expr for value in collection if condition}
  3. Compréhension d’ensemble

    Forme de base : Même chose que la compréhension de liste, utilisez simplement {} au lieu de []

  4. Compréhension de liste imbriquée

    Forme de base :

    [expr for val in collection for innerVal in val if condition]