Types de données de base en Python
Vous connaissez maintenanthow to interact with the Python interpreter and execute Python code. Il est temps de creuser dans le langage Python. Le premier est une discussion sur les types de données de base qui sont intégrés dans Python.
Voici ce que vous apprendrez dans ce didacticiel:
-
Vous découvrirez plusieurs types de basenumeric, string etBoolean intégrés à Python. À la fin de ce didacticiel, vous saurez à quoi ressemblent les objets de ces types et comment les représenter.
-
Vous obtiendrez également un aperçu desfunctions. intégrés à Python. Ce sont des morceaux de code pré-écrits que vous pouvez appeler pour faire des choses utiles. Vous avez déjà vu la fonction intégrée
print()
, mais il y en a beaucoup d'autres.
Téléchargement PDF gratuit: Aide-mémoire Python 3
__ Take the Quiz: Testez vos connaissances avec notre quiz interactif «Types de données de base en Python». À la fin, vous recevrez un score afin que vous puissiez suivre vos progrès d'apprentissage au fil du temps:
Entiers
En Python 3, il n'y a en fait aucune limite à la longueur d'une valeur entière. Bien sûr, il est limité par la quantité de mémoire de votre système, comme toutes choses, mais au-delà, un entier peut être aussi long que vous en avez besoin:
>>>
>>> print(123123123123123123123123123123123123123123123123 + 1)
123123123123123123123123123123123123123123123124
Python interprète une séquence de chiffres décimaux sans aucun préfixe comme un nombre décimal:
>>>
>>> print(10)
10
Les chaînes suivantes peuvent être ajoutées à une valeur entière pour indiquer une base autre que 10:
Préfixe | Interprétation | Base |
---|---|---|
|
Binaire |
2 |
|
Octal |
8 |
|
Hexadécimal |
16 |
Par exemple:
>>>
>>> print(0o10)
8
>>> print(0x10)
16
>>> print(0b10)
2
Pour plus d'informations sur les valeurs entières avec des bases non décimales, consultez les sites Wikipédia suivants:Binary,Octal etHexadecimal.
Le type sous-jacent d'un entier Python, quelle que soit la base utilisée pour le spécifier, est appeléint
:
>>>
>>> type(10)
>>> type(0o10)
>>> type(0x10)
Note: C'est le bon moment pour mentionner que si vous souhaitez afficher une valeur pendant une session REPL, vous n'avez pas besoin d'utiliser la fonctionprint()
. Tapez simplement la valeur à l'invite>>>
et appuyez sur[.kbd .key-enter]#Enter # pour l'afficher:
>>>
>>> 10
10
>>> 0x10
16
>>> 0b10
2
De nombreux exemples de cette série de didacticiels utiliseront cette fonctionnalité.
Notez que cela ne fonctionne pas dans un fichier script. Une valeur apparaissant seule sur une ligne dans un fichier script ne fera rien.
Nombres à virgule flottante
Le typefloat
en Python désigne un nombre à virgule flottante. Les valeursfloat
sont spécifiées avec un point décimal. Facultativement, le caractèree
ouE
suivi d'un entier positif ou négatif peut être ajouté pour spécifierscientific notation:
>>>
>>> 4.2
4.2
>>> type(4.2)
>>> 4.
4.0
>>> .2
0.2
>>> .4e7
4000000.0
>>> type(.4e7)
>>> 4.2e-4
0.00042
Deep Dive: représentation en virgule flottante
Ce qui suit est un peu plus d'informations sur la façon dont Python représente les nombres à virgule flottante en interne. Vous pouvez facilement utiliser des nombres à virgule flottante en Python sans les comprendre à ce niveau, alors ne vous inquiétez pas si cela semble trop compliqué. Les informations sont présentées ici au cas où vous seriez curieux.
Presque toutes les plates-formes représentent les valeurs Python
float
sous forme de valeurs 64 bits «double précision», selon la normeIEEE 754. Dans ce cas, la valeur maximale qu'un nombre à virgule flottante peut avoir est d'environ 1,8 ⨉ 10308. Python indiquera un nombre supérieur à celui de la chaîneinf
:>>>
>>> 1.79e308 1.79e+308 >>> 1.8e308 inf
Le nombre différent de zéro le plus proche de zéro est d'environ 5,0 ⨉ 10-324. Tout ce qui est plus proche de zéro que cela est effectivement nul:
>>>
>>> 5e-324 5e-324 >>> 1e-325 0.0
Les nombres à virgule flottante sont représentés en interne sous forme de fractions binaires (base-2). La plupart des fractions décimales ne peuvent pas être représentées exactement comme des fractions binaires, donc dans la plupart des cas, la représentation interne d'un nombre à virgule flottante est une approximation de la valeur réelle. En pratique, la différence entre la valeur réelle et la valeur représentée est très faible et ne devrait généralement pas poser de problèmes importants.
Further Reading: Pour plus d'informations sur la représentation en virgule flottante en Python et les pièges potentiels impliqués, consultezFloating Point Arithmetic: Issues and Limitations dans la documentation Python.
Nombres complexes
Les nombres complexes sont spécifiés en<real part>+<imaginary part>j
. Par exemple:
>>>
>>> 2+3j
(2+3j)
>>> type(2+3j)
Les cordes
Les chaînes sont des séquences de données de caractères. Le type de chaîne en Python est appeléstr
.
Les littéraux de chaîne peuvent être délimités à l'aide de guillemets simples ou doubles. Tous les caractères entre le délimiteur d'ouverture et le délimiteur de fermeture correspondant font partie de la chaîne:
>>>
>>> print("I am a string.")
I am a string.
>>> type("I am a string.")
>>> print('I am too.')
I am too.
>>> type('I am too.')
Une chaîne en Python peut contenir autant de caractères que vous le souhaitez. La seule limite est les ressources mémoire de votre machine. Une chaîne peut également être vide:
>>>
>>> ''
''
Que faire si vous souhaitez inclure un caractère de citation dans la chaîne elle-même? Votre première impulsion pourrait être d'essayer quelque chose comme ceci:
>>>
>>> print('This string contains a single quote (') character.')
SyntaxError: invalid syntax
Comme vous pouvez le voir, cela ne fonctionne pas si bien. La chaîne de cet exemple s'ouvre avec un guillemet simple, donc Python suppose que le guillemet simple suivant, celui entre parenthèses qui devait faire partie de la chaîne, est le délimiteur de fermeture. Le guillemet final final est alors un parasite et provoque l'erreur de syntaxe indiquée.
Si vous souhaitez inclure l'un ou l'autre type de guillemet dans la chaîne, le moyen le plus simple consiste à délimiter la chaîne avec l'autre type. Si une chaîne doit contenir un guillemet simple, délimitez-la avec des guillemets doubles et vice versa:
>>>
>>> print("This string contains a single quote (') character.")
This string contains a single quote (') character.
>>> print('This string contains a double quote (") character.')
This string contains a double quote (") character.
Séquences d'échappement dans les chaînes
Parfois, vous voulez que Python interprète différemment un caractère ou une séquence de caractères dans une chaîne. Cela peut se produire de deux manières:
-
Vous souhaiterez peut-être supprimer l'interprétation spéciale selon laquelle certains caractères sont généralement donnés dans une chaîne.
-
Vous souhaiterez peut-être appliquer une interprétation spéciale aux caractères d'une chaîne qui serait normalement prise à la lettre.
Vous pouvez accomplir cela en utilisant une barre oblique inverse (\
). Une barre oblique inversée dans une chaîne indique qu'un ou plusieurs caractères qui la suivent doivent être traités spécialement. (Ceci est appelé une séquence d'échappement, car la barre oblique inverse fait que la séquence de caractères suivante «échappe» à sa signification habituelle.)
Voyons comment cela fonctionne.
Suppression des caractères spéciaux Signification
Vous avez déjà vu les problèmes que vous pouvez rencontrer lorsque vous essayez d'inclure des guillemets dans une chaîne. Si une chaîne est délimitée par des guillemets simples, vous ne pouvez pas spécifier directement un seul caractère de guillemet dans le cadre de la chaîne, car, pour cette chaîne, le guillemet simple a une signification particulière — il termine la chaîne:
>>>
>>> print('This string contains a single quote (') character.')
SyntaxError: invalid syntax
La spécification d'une barre oblique inverse devant le caractère guillemet dans une chaîne «l'échappe» et fait que Python supprime sa signification spéciale habituelle. Il est alors interprété simplement comme un caractère de guillemet simple littéral:
>>>
>>> print('This string contains a single quote (\') character.')
This string contains a single quote (') character.
La même chose fonctionne également dans une chaîne délimitée par des guillemets doubles:
>>>
>>> print("This string contains a double quote (\") character.")
This string contains a double quote (") character.
Ce qui suit est un tableau de séquences d'échappement qui font que Python supprime l'interprétation spéciale habituelle d'un caractère dans une chaîne:
Séquence d'échappement |
Interprétation habituelle des caractères après la barre oblique inverse |
Interprétation «échappé» |
---|---|---|
|
Termine la chaîne avec un séparateur d'ouverture entre guillemets simples |
Guillemet simple littéral ( |
|
Termine la chaîne avec un séparateur d'ouverture entre guillemets |
Guillemet double littéral ( |
|
Termine la ligne d'entrée |
La nouvelle ligne est ignorée |
|
Introduit la séquence d'échappement |
Barre oblique inverse littérale ( |
Normalement, un caractère de nouvelle ligne termine la saisie de ligne. Donc, appuyer sur[.kbd .key-enter]#Enter # au milieu d'une chaîne fera penser à Python qu'il est incomplet:
>>>
>>> print('a
SyntaxError: EOL while scanning string literal
Pour fractionner une chaîne sur plusieurs lignes, incluez une barre oblique inverse avant chaque nouvelle ligne, et les nouvelles lignes seront ignorées:
>>>
>>> print('a\
... b\
... c')
abc
Pour inclure une barre oblique inverse littérale dans une chaîne, échappez-la avec une barre oblique inverse:
>>>
>>> print('foo\\bar')
foo\bar
Application d'une signification spéciale aux caractères
Supposez ensuite que vous devez créer une chaîne contenant un caractère de tabulation. Certains éditeurs de texte peuvent vous permettre d'insérer un caractère de tabulation directement dans votre code. Mais de nombreux programmeurs considèrent cette mauvaise pratique, pour plusieurs raisons:
-
L'ordinateur peut faire la distinction entre un caractère de tabulation et une séquence de caractères d'espacement, mais vous ne pouvez pas. Pour un humain qui lit le code, les caractères de tabulation et d'espace sont visuellement indiscernables.
-
Certains éditeurs de texte sont configurés pour éliminer automatiquement les caractères de tabulation en les étendant au nombre approprié d'espaces.
-
Certains environnements Python REPL n'insèrent pas d'onglets dans le code.
En Python (et presque tous les autres langages informatiques courants), un caractère de tabulation peut être spécifié par la séquence d'échappement
:
>>>
>>> print('foo\tbar')
foo bar
La séquence d'échappement
fait perdre au caractèret
sa signification habituelle, celle d'un littéralt
. Au lieu de cela, la combinaison est interprétée comme un caractère de tabulation.
Voici une liste de séquences d'échappement qui font que Python applique une signification spéciale au lieu d'interpréter littéralement:
Séquence d'échappement | Interprétation «échappé» |
---|---|
|
Caractère ASCII Bell ( |
|
Caractère ASCII Backspace ( |
|
ASCII Formfeed ( |
|
Saut de ligne ASCII ( |
|
Caractère de la base de données Unicode avec des |
|
Caractère ASCII de retour chariot ( |
|
Tabulation horizontale ASCII ( |
|
Caractère Unicode avec valeur hexadécimale de 16 bits |
|
Caractère Unicode avec une valeur hexadécimale 32 bits |
|
Tabulation verticale ASCII ( |
|
Caractère avec valeur octale |
|
Caractère avec valeur hexadécimale |
Exemples:
>>>
>>> print("a\tb")
a b
>>> print("a\141\x61")
aaa
>>> print("a\nb")
a
b
>>> print('\u2192 \N{rightwards arrow}')
→ →
Ce type de séquence d'échappement est généralement utilisé pour insérer des caractères qui ne sont pas facilement générés à partir du clavier ou qui ne sont pas facilement lisibles ou imprimables.
Cordes brutes
Un littéral de chaîne brute est précédé der
ouR
, ce qui spécifie que les séquences d'échappement dans la chaîne associée ne sont pas traduites. Le caractère barre oblique inverse est laissé dans la chaîne:
>>>
>>> print('foo\nbar')
foo
bar
>>> print(r'foo\nbar')
foo\nbar
>>> print('foo\\bar')
foo\bar
>>> print(R'foo\\bar')
foo\\bar
Chaînes à guillemets triples
Il existe encore une autre façon de délimiter les chaînes en Python. Les chaînes entre guillemets triples sont délimitées par des groupes de correspondance de trois guillemets simples ou de trois guillemets doubles. Les séquences d'échappement fonctionnent toujours dans les chaînes entre guillemets triples, mais les guillemets simples, les guillemets doubles et les retours à la ligne peuvent être inclus sans les échapper. Cela fournit un moyen pratique de créer une chaîne avec des guillemets simples et doubles:
>>>
>>> print('''This string has a single (') and a double (") quote.''')
This string has a single (') and a double (") quote.
Parce que les sauts de ligne peuvent être inclus sans les échapper, cela permet également des chaînes multilignes:
>>>
>>> print("""This is a
string that spans
across several lines""")
This is a
string that spans
across several lines
Vous verrez dans le prochain tutoriel sur la structure du programme Python comment les chaînes entre guillemets triples peuvent être utilisées pour ajouter un commentaire explicatif au code Python.
Type booléen, contexte booléen et «véracité»
Python 3 fournit un type de données booléen. Les objets de type booléen peuvent avoir l'une des deux valeurs,True
ouFalse
:
>>>
>>> type(True)
>>> type(False)
Comme vous le verrez dans les prochains tutoriels, les expressions en Python sont souvent évaluées dans un contexte booléen, ce qui signifie qu'elles sont interprétées comme représentant la vérité ou le mensonge. Une valeur vraie dans le contexte booléen est parfois dite «véridique», et une valeur fausse dans le contexte booléen est dite «fausse». (Vous pouvez également voir «fausse» orthographié «falsey».)
La «véracité» d'un objet de type booléen va de soi: les objets booléens égaux àTrue
sont vrais (vrais) et ceux égaux àFalse
sont faux (faux). Mais les objets non booléens peuvent également être évalués dans un contexte booléen et déterminés comme vrais ou faux.
Vous en apprendrez plus sur l'évaluation des objets en contexte booléen lorsque vous rencontrerez des opérateurs logiques dans le prochain tutoriel sur les opérateurs et les expressions en Python.
Fonctions intégrées
L'interpréteur Python prend en charge de nombreuses fonctions intégrées: soixante-huit, à partir de Python 3.6. Vous en couvrirez un grand nombre dans les discussions suivantes, dans leur contexte.
Pour l'instant, un bref aperçu suit, juste pour donner une idée de ce qui est disponible. Voir lesPython documentation on built-in functions pour plus de détails. La plupart des descriptions suivantes font référence à des rubriques et concepts qui seront abordés dans les futurs didacticiels.
Math
Une fonction | La description |
---|---|
|
Renvoie la valeur absolue d'un nombre |
|
Renvoie le quotient et le reste de la division entière |
|
Renvoie le plus grand des arguments ou éléments donnés dans un itérable |
|
Renvoie le plus petit des arguments ou éléments donnés dans un itérable |
|
Élève un nombre à une puissance |
|
Arrondit une valeur à virgule flottante |
|
Somme les éléments d'un itérable |
Conversion de type
Une fonction | La description |
---|---|
|
Renvoie une chaîne contenant une représentation imprimable d'un objet |
|
Convertit un entier en chaîne binaire |
|
Convertit un argument en valeur booléenne |
|
Renvoie une représentation sous forme de chaîne d'un caractère donné par un argument entier |
|
Renvoie un nombre complexe construit à partir d'arguments |
|
Renvoie un objet à virgule flottante construit à partir d'un nombre ou d'une chaîne |
|
Convertit un entier en chaîne hexadécimale |
|
Renvoie un objet entier construit à partir d'un nombre ou d'une chaîne |
|
Convertit un entier en une chaîne octale |
|
Renvoie une représentation entière d'un caractère |
|
Renvoie une chaîne contenant une représentation imprimable d'un objet |
|
Renvoie une version chaîne d'un objet |
|
Renvoie le type d'un objet ou crée un nouvel objet de type |
Iterables et itérateurs
Une fonction | La description |
---|---|
|
Renvoie |
|
Renvoie |
|
Renvoie une liste de tuples contenant des indices et des valeurs d'un itérable |
|
Filtre les éléments d'un itérable |
|
Renvoie un objet itérateur |
|
Renvoie la longueur d'un objet |
|
Applique une fonction à chaque élément d'un itérable |
|
Récupère l'élément suivant d'un itérateur |
|
Génère une plage de valeurs entières |
|
Renvoie un itérateur inversé |
|
Renvoie un objet |
|
Renvoie une liste triée à partir d'un itérable |
|
Crée un itérateur qui agrège les éléments des itérables |
Type de données composite
Une fonction | La description |
---|---|
|
Crée et renvoie un objet de la classe |
|
Crée et renvoie un objet |
|
Crée un objet |
|
Crée un objet |
|
Construit un objet |
|
Renvoie un nouvel objet sans caractéristique |
|
Crée un objet |
|
Crée un objet |
Classes, attributs et héritage
Une fonction | La description |
---|---|
|
Renvoie une méthode de classe pour une fonction |
|
Supprime un attribut d'un objet |
|
Renvoie la valeur d'un attribut nommé d'un objet |
|
Renvoie |
|
Détermine si un objet est une instance d'une classe donnée |
|
Détermine si une classe est une sous-classe d'une classe donnée |
|
Renvoie une valeur de propriété d'une classe |
|
Définit la valeur d'un attribut nommé d'un objet |
|
Renvoie un objet proxy qui délègue les appels de méthode à une classe parent ou sœur |
Input/Output
Une fonction | La description |
---|---|
|
Convertit une valeur en une représentation formatée |
|
Lit les entrées de la console |
|
Ouvre un fichier et renvoie un objet fichier |
|
Imprime sur un flux de texte ou sur la console |
Variables, références et portée
Une fonction | La description |
---|---|
|
Renvoie une liste de noms dans la portée locale actuelle ou une liste d'attributs d'objet |
|
Renvoie un dictionnaire représentant la table de symboles globale actuelle |
|
Renvoie l'identité d'un objet |
|
Met à jour et renvoie un dictionnaire représentant la table de symboles locale actuelle |
|
Renvoie l'attribut |
Divers
Une fonction | La description |
---|---|
|
Renvoie |
|
Compile la source dans un code ou un objet AST |
|
Évalue une expression Python |
|
Implémente l'exécution dynamique du code Python |
|
Renvoie la valeur de hachage d'un objet |
|
Invoque le système d'aide intégré |
|
Renvoie un objet de vue mémoire |
|
Renvoie une méthode statique pour une fonction |
|
Appelé par l'instruction |
Conclusion
Dans ce didacticiel, vous avez découvert lesdata types etfunctions intégrés fournis par Python.
Les exemples donnés jusqu'à présent ont tous été manipulés et n'ont affiché que des valeurs constantes. Dans la plupart des programmes, vous souhaiterez généralement créer des objets dont la valeur change à mesure que le programme s'exécute.
Accédez au didacticiel suivant pour en savoir plus sur Pythonvariables.
__ Take the Quiz: Testez vos connaissances avec notre quiz interactif «Types de données de base en Python». À la fin, vous recevrez un score afin que vous puissiez suivre vos progrès d'apprentissage au fil du temps: