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
-
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): -
Sorted trie tous les objets itérables.
sorted([2, 1, 3]) => [1, 2, 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'), (..), ..] -
Reversed retourne un itérateur inversé.
list(reversed(range(10)))
Contrôle et Flux
-
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 -
Utilisation courante de l’opérateur for :
for element in iterator : -
‘pass’ - Ne fait rien, généralement utilisé comme instruction de remplissage.
-
Expression ternaire
value = true-expr if condition else false-expr -
Pas d’instruction switch/case, utilisez if/elif à la place.
Orientation Objet
-
‘object’ est la base de tous les types Python
-
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.
-
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') -
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
- Forme de base
try:
..
except ValueError as e:
print e
except (TypeError, AnotherError):
..
except:
..
finally:
..- 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.
-
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.
-
Compréhension de dictionnaire
{key-expr : value-expr for value in collection if condition} -
Compréhension d’ensemble
Forme de base : Même chose que la compréhension de liste, utilisez simplement {} au lieu de []
-
Compréhension de liste imbriquée
Forme de base :
[expr for val in collection for innerVal in val if condition]