Jusqu'à maintenant, nous avons vu deux structures de données en Python: les chaînes et les listes. Elles supportent plusieurs methodes, qui sont des variantes des fonctions.
Par exemple, une methode de liste est la méthode reverse(). Comme son nom l'indique, elle inverse une liste (par exemple le premier élément devient le dernier et vice-versa). On appelle une méthode en utilisant une structure point (.) , de cette manière:
«nomObjet».«nomMéthode»(«liste d'arguments, s'il y en a»)
Pour comparer, la syntaxe que nous avons déjà vu pour appeler une fonction était
«nomFonction»(«liste des arguments, s'il y en a»)
Voici un exemple d'appel de la méthode reverse pour une liste.
Un exemple de méthode qui prend un argument est str.startswith qui indique si une chaîne commence ou non par une chaîne donnée:
De nombreuses méthodes
Nous mentionnons ci-dessous les méthodes les plus courantes pour les chaînes et les listes. Elles exécutent des tâches que vous pourriez écrire vous-même mais l'utilisation de méthodes standards a l'avantage de rendre le code plus facile à lire et à modifier pour les autres. Et pourquoi refaire quelque chose qui existe déjà!
Listes
Ces méthodes ne modifient pas les listes:
list.index(X): trouveXdans la liste et retourne l'indexitel quelist[i]==Xen cherchant tous les éléments. Le plus petitipossible est retourné. SiXn'existe pas dans la liste, uneValueErrorest générée.X in listretourneTruesiXest un élément de la liste sinonFalse. L'utiliser pour évite l'erreurValueError.
list.count(X): retourne le nombre de fois qu'un élémentXapparaît dans une liste.
Ces méthodes modifient la liste:
list.append(X)ajouteXà la fin delistlist.insert(i, X)ajouteXà la positionilist.extend(L)ajoute une listeLd'éléments à la finlist.remove(X)supprime la première apparition deXlist.pop(i)efface & retourne l'élémentlist[i], tandis quelist.pop()efface & retourne le dernier élémentdel list[i]efface leième élément delistlist.reverse()inverse la listelist.sort()trie la liste
Toutes les méthodes ci-dessus excepté pop retournent None. Certaines de ces méthodes peuvent être appelées avec des arguments un peu différents; pour plus d'informations voir la section list methods de la documentation Python. Les listes supportent aussi des sous-ensemble plus complexe appelés "tranches" qui permettent l'insertion et l'effacement de toute une sous-liste, similaire à la notation string[x:y:z] que nous avons vu aux leçons précédentes.
Chaînes
Comme pour les listes, vous pouvez utiliser in, index et count avec les chaînes. Elles sont encore plus puissantes puisqu'elles fonctionnent avec les sous-chaînes également et pas que pour trouver des caractères seuls:
S in Test un booléen qui indique si une chaîneSest une sous-chaîne de la chaîneTS.index(T)trouve le premier index deSoùTest une sous-chaîneS.count(T)donne le nombre d'occurrences deTqui ne se chevauchent pas comme sous-chaîne deS
Voici les méthodes de str les plus couramment utilisées:
- Casse des lettres:
capitalize, lower, upper, islower, isupper - Caractères:
isalpha, isdigit - Padding:
center, ljust, rjust;stripefface le padding - Sous-chaînes:
endswith, startswith, find, replace - Parcours:
split, splitlines
Nous introduirons ces méthodes plus en détails lorsque nous en aurons besoin. Une liste détaillée de méthodes pour chaînes est donnée dans la documentation Python.
Les chaînes sont immuables. Nous avons mentionné list.reverse() qui change une liste en l'inversant, mais il n'y a pas de méthode str.reverse(). Ceci est parce que les objets chaînes ne peuvent pas être modifiés une fois qu'il ont été créés. La leçon 17 donnera plus d'explications à ce sujet.
Voici un exemple d'une méthode chaîne: S.replace(ancien, nouveau) retourne une version modifée de S dans laquelle chaque occurrence de la sous-chaîne ancien est remplacée par nouveau. Cela créé une nouvelle chaîne sans changer l'ancienne:
Pour l'exercice suivant, ces méthodes seront utiles:
str.replace, que nous venons de décrire- la méthode booléenne
str.isalpha()qui retourneTruesistrest une chaîne (ou caractère) composée de lettres uniquement - la méthode booléenne
str.isdigit()qui retourneTruesistrest une chaîne (ou caractère) composée de chiffres uniquement str.upper()qui retourne une version destrconvertie en majuscule.
![]() | Le reste de cette leçon est technique et n'est pas requis pour la suite des leçons. |
A propos des objets
Au fur et à mesures que vous allez apprendre Python, vous allez découvrir d'autres classes que les chaînes et les listes. D'autres classes que vous rencontrerez surement sont les objets fichier, les sets et les dictionnaires. Elles ont toutes de nombreuses méthodes très utiles. Vous pouvez demander à Python toutes les méthodes d'une objet donné en utilisant la fonction dir:
Regarder les propriétés d'un objet s'appelle introspection. Tout en Python peut avoir des méthodes:
Certaines entrées de dir sont en fait des variables membre au lieu de méthodes, par exemple int.denominator est un nombre et pas une fonction. Techniquement, les fonctions sont des objets en Python, donc les fonctions membres sont des cas spéciaux de variables membres.
Vous pouvez faire des introspections de modules également. Si vous importez le module math (import math) et appelez dir(math) vous obtiendrez une liste de tout ce qui est contenu dans le module math, y compris le nombre pi et la fonction sqrt.
Pourquoi des objets?
Pourquoi avons-nous des méthodes comme S.index(T) au lieu d'un simple appel de fonction comme index(S, T)? C'est-à-dire, pourquoi avons-nous l'objet S et la méthode str.index() du tout?
Les principaux avantages des objets deviennent plus claires quand vous commencer à programmer avec des types de données plus complexes et variés. Chaque type d'objet (par exemple, la classe str) représente à la fois les données sous-jacentes stockées (p. ex., une séquence de caractères et sa longueur) et les types d'opérations qui peuvent être effectuées sur celui-ci (p. ex., la conversion en majuscules et la production d'un sous-chaîne). Un exemple plus complexe est les objets de fichiers: ils représentent le nom du fichier qui est ouvert, votre position actuelle dans le fichier, et les méthodes pour les lire et écrire. Vous pouvez même définir vos propres types de données!
Cette approche générale est appelée «programmation orientée objet» (POO). Certains de ses avantages sont les suivants:
- organisation: Tout dans le module
mathpeut être accédé par la syntaxemath.«nom». Ca éviter incompatibilités avec les noms de variables dans votre programme. - encapsulation: Tout comme un programme peut travailler avec plusieurs chaînes ou plusieurs objets fichiers en même temps, vous pouvez travailler avec plusieurs copies distinctes (instances) de n'importe quel type de données tu définisse.
- réutilisation: Une fois que vous avez défini un type de données (comme
str) ou une bibliothèque de méthodes (commemath), vous pouvez le réutiliser encore et encore, ou le donner à d'autres personnes à utiliser. - débogage: Nous avons vu comment l'écriture des fonctions évite la nécessité d'avoir de nombreuses copies du même code, et que ça rend le débogage plus facile. On obtient le même effet quand on definit toutes les fonctions associées à un type de données en un seul endroit (la définition de la classe).
- relations entre les classes: Python sait que la méthode
indexsignifie une chose pour une chaîne et quelque chose d'autre pour une liste. De même, non seulement peut Python lire et écrire des fichiers sur votre ordinateur, mais il peut également lire et écrire des données sur Internet. Dans les deux cas (séquences des caractères ou de quelque d'autre, et les fichiers locaux ou distants) les classes liées peuvent être traitées de manière uniforme en utilisant le concept d'héritage.
Dans le reste du Cercles Informatiques nous allons seulement utiliser des objets et des méthodes. Vous pouvez en apprendre davantage sur la création de vos propres classes plus tard (voir la page Ressources).
Les trois leçons suivants peuvent être complétées dans n'importe quel ordre. Ils donnent une variété de défis combinant les thèmes des précédentes leçons.




