Python permet l'utilisation de plusieurs
sortes de constantes numériques. Ce sont les entiers, les entiers
longs, les nombres à virgules flottantes et les complexes.
Les
entiers
Les entiers peuvent être courts (32 bits) ou longs par défaut les types entiers sont courts et en base dix. Les types entiers longs sont de taille illimitée. Pour déclarer un entier long, il suffit de placer un 'L' après sa valeur (999999999L).
Il est aussi possible de créer des
entiers avec des valeurs octales et hexadécimales. Pour une valeur
octale il suffit de faire précéder la valeur par un '0' (077)
et hexadécimale par '0x' (0x3f).
Les
réels
Les réels se déclarent sous la forme "x = 1.0" et sont en base dix; pour ce qui est de leur taille, celle-ci est de type double par rapport au C.
Les réels permettent aussi des exposants
sous la forme de "4E2". L'indice de l'exposant peux être positif
ou négatif et le marqueur 'E' majuscule ou minuscule ! Les valeurs
même entières avec des exposants, sont automatiquement transformées
en réels.
Les
complexes
Les constantes complexes en Python sont écrites
"réelle+imaginaire", en terminant avec un 'J' ou 'j' (4+4J). De
manière interne, elles sont implémentées par une paire
de nombres à virgule flottante, mais les opérations numériques
sur les nombres complexes utilisent des fonctions dédiées
aux complexes.
Les
opérateurs principaux pour les types numériques sont :
La priorité des opérateurs
est similaire aux mathématiques donc avec X*Y+Z, X*Y est prioritaire
par rapport à +Z. Les parenthèses permettent d'avoir des
sous-expressions, dans X*(Y+Z), Y+Z est prioritaire par rapport à
X*.
Dans le cas d'un mélange de types
numériques lors d'une opération, on peut se demander quel
est le type du résultat. La réponse est que Python évalue
(comme d'autres langages) la complexité des opérandes et
transforme toutes les autres en ce même type. La réponse sera
du type le plus complexe de toutes les opérandes. Les entiers courts
sont plus simples que les entiers longs, eux-mêmes plus simples que
les nombres à virgule flottante qui sont eux plus simples que les
complexes !
Les
tests de vérité.
En Python « vrai » signifie n'importe quel nombre différent de zéro ou d'objets non vides. « Faux » signifie « non Vrai », donc zéro, un objet vide , et None.
"or" et "and" retourne toujours des objets,
exemple :
>>> 2 or 3, 3 or 2 # Si les deux son « vrai » retourne celui de gauche.
(2, 3)
>>> [] or 3, 3 or [] # Si seulement un est « vrai » retourne celui-ci.
(3, 3)
>>> [] or 3
3
>>> [] or {} # Si les deux sont « faux » retourne celui de droite.
{}
>>> 2 and 3, 3 and 2 # Si le résultat est vrai retourne celui de droite.
(3, 2)
>>> [] and 3, 3 and [] # Si seulement un est « vrai » retourne le « faux ».
([], [])
>>> [] and 3
[]
>>> [] and {} # Si les deux sont faux retourne celui de gauche.
[]
Les
chaînes
La chaîne est en fait une chaîne de caractères qui est utilisée pour stocker et représenter de l'information textuelle. D'un point de vue fonctionnel, les chaînes peuvent représenter tout ce qui peut être encodé comme du texte.
Les caractères en Python n'existent
pas comme dans certains langages (C). Un caractère en Python est
une chaîne d'un caractère. Les chaînes de caractères
sont des séquences non modifiables : elle répondent aux opérations
habituelles mais elle ne peuvent pas être modifiées sur place.
Les chaînes peuvent êtres déclarées
avec un simple guillemet ou un double. Les deux sont possibles, mais le
double guillemet permet d'avoir une apostrophe sans avoir recours au backslash.
Le triple double guillemet permet d'entrer une chaîne de caractères
sur plusieurs lignes, y compris les caractères de retour de ligne.
Indiçage
et extraction.
L'indiçage et l'extraction sont importants pour la compréhension des types chaînes de caractères, listes, tuples, les deux s'effectuent avec des valeurs comprises entre crochets ([]).
L'indiçage est le fait de sélectionner un élément par rapport à sa position dans l'objet. L'indiçage peut s'effectuer en comptant depuis la gauche ou la droite, un indice positif indique que l'on commence à compter par la gauche (x[3]) et que le premier objet a comme indice 0, un indice négatif indique que l'on compte depuis la droite (x[-3]).
L'extraction est le fait de sélectionner une partie plus ou moins grande d'un objet, une tranche. Pour extraire une partie il faut insérer entre les crochets l'indice du premier élément suivi de deux points et de la valeur de l'élément suivant (x[2:5]). Attention la valeur placée sous le deuxième indice ne sera pas extraite !
Une valeur laissée vierge prend la valeur de 0 à gauche et du nombre du dernier élément de l'objet pour la droite (x[:5] => x[0:5] et x[3:] => x[3:fin]). Comme pour l'indiçage les valeurs négatives permettent de compter depuis la droite. Une extraction impossible donnera un objet vide !
Formatage
des chaînes de caractères.
Il est impossible de changer sur place une
chaîne, par indiçage par exemple. Pour modifier les informations
textuelles d'une chaîne nous avons besoin d'en construire une nouvelle.
>>> s = 'dalut'
>>> s[0] = 's'
>>> erreur !!!
mais
>>> s = 's'+s[1:]
>>> s
>>> 'salut'
L'opérateur
surchargé %.
L'opérateur % sur les nombres effectue un modulo (reste de division). Il fonctionne avec un format de chaîne sur la gauche (%s).
Avec l'opérateur, il est possible
d'insérer dans une phrase une ou des chaînes quelles qu'elles
soient.
>>>str = 'mon'
>>> print "c'est %s bateau" % str
>>> c'est mon bateau
>>> print "c'est %s bateau no %d" %(str, 27)
>>> c'est mon bateau no 27
Variation
sur les chaînes.
L'insertion du caractère antislash
peut servir notamment à insérer des guillemets ou des retours
de ligne, mais une multitude d'autres paramètres peuvent être
insérés après l'antislash.
Les
listes.
La liste est l'objet de collection ordonné
le plus souple. Il permet de contenir toutes sortes d'objets : nombres,
chaînes, et même d'autres listes. La déclaration d'une
liste se fait par la mise entre crochets des objets de celle-ci.
>>> x = [0, 1, `hello']
Du point de vue de l'utilisation, les listes permettent de collecter de nouveaux objets afin de les traiter tous ensembles.
Comme les chaînes, les objets d'une liste sont sélectionnables par indiçage. Les listes sont ordonnées et autorisent donc l'extraction de tranches et la concaténation.
Les listes permettent une modification de
leur contenu : remplacement, destruction,... d'objets sans pour autant
devoir en faire une copie (comme les chaînes). On dit quelles peuvent
êtres changées sur place.
Les dernières entrées de la
table sont nouvelles. Les listes répondent aussi bien aux fonctions
d'addition de répétition, qu'à l'appel de méthodes.
Ces méthodes permettent l'ajout, la suppression, le tri et l'inversion.
Les
Dictionnaires.
Le dictionnaire est un système très
souple pour intégrer des données. Si on pense aux listes
comme une collection d'objets ordonnés et portant un indice par
rapport à la position, un dictionnaire est une liste comportant
à la place de ces indices, un mot servant de clé pour retrouver
l'objet voulu. Un dictionnaire est affecté par une paire d'accolades
({}).
>>> dico = {`japon' :'japan', `chine'
:'china'}
Les clés peuvent être de toutes les sortes d'objet non modifiables. Par contre la valeur stockée peut être de n'importe quel type.
Un dictionnaire n'est pas ordonné
comme une liste, mais c'est une représentation plus symbolique de
classement par clés. La taille d'un dictionnaire peut varier, et
le dictionnaire est un type modifiable sur place.
Les
tuples.
Un des types de Python est le tuple. Le tuple
est comme la liste, une collection ordonnée d'objets. Un tuple peut
contenir n'importe quelle sorte d'objet, mais la grande différence
avec la liste est que le tuple n'est pas modifiable sur place. Un tuple
se déclare avec des valeurs entre parenthèses et non entre
crochets comme la liste.
>>> tuple = (0, 1.4, `world')
Les tuples peuvent être indicés
pour la recherche d'un élément, une extraction est aussi
possible. Ils supportent toutes sortes d'objets et même un tuple
dans un tuple. Mais les tuples ne sont pas modifiables, donc comme les
chaînes, ils ne peuvent pas grandir ou diminuer de taille.
Pourquoi
les tuples.
Une des réponses possible à
cette question est que la non-possibilité de modifier les tuples
assure une certaine intégrité. Vous pouvez être sûr
qu'un tuple ne sera pas modifié à travers une référence
ailleurs dans le programme.
Les
fichiers.
Ce type intégré dans python
se différencie des autres, car ce ne sont ni des nombres, ni des
séquences, ni des maps. En fait la commande open permet à
l'intérieur d'un programme python d'accéder à un fichier.
>>> mon_fichier = open(`fichier', `w')
Les commandes associées au traitement des fichiers ne se résument que par des méthodes.
Le tableau suivant montre les principales
méthodes en vigueur sur les fichiers, il est important de dire que,
lors de l'ouverture de l'objet-fichier celui-ci prend la forme de chaîne
dans le programme Python.
La fonction « close » ferme l'objet fichier en cours. Python, pour gérer l'espace mémoire, ferme dans certains cas le fichier lui-même, lorsqu'il n'est plus référencé nulle part. Cependant fermer un fichier manuellement permet une certaine clarté, ce qui est important dans une grande application.