Outils pour utilisateurs

Outils du site


all:bibles:langages:python:variables

Variables


Les types numériques

Les entiers (simple ou long)

Les entiers sont des nombres qui s’étendent sur une machine 32 bits entre les valeurs -2e31+1 et 2e31-1, soit entre -2147483647 et 2147483647.

Bases

  • La forme décimale commence par un chiffre de 1 à 9 suivi de chiffre de 0 à 9.
  • La base octale commence par “0” suivi de chiffres de 0 à 7.
  • La base hexadécimale commence par “0x” suivi de chiffres 0 à 9 et de lettres de A à F.

Les entiers longs

Les entiers longs sont eux limités uniquement par la capacité mémoire de la machine.
Ils sont représentés de la même manière que les entiers mais sont suffixés de la lettre L.
Depuis la version de 2.4 un nombre entier est automatiquement transtypé s'il dépasse la plage autorisée.

Les flottants

  • Les flottants permettent de représenter des nombres réels.
  • La partie entière est séparée de la partie fractionnelle par un “.”

Les nombres complexes

Exemple

>>> a = 2 + 1j
>>> b = 1 + 2j
>>> a+b
(3+3j)
>>> a.imag
1.0
>>> a.real
2.0
>>> a.conjugate()
(2-1j)

Les séquences

Une séquence est une collection ordonnée d’éléments indexés par des nombres positifs.
Les index varient de 0 à n-1 pour une séquence de n éléments.

élément 1 2 i n-1 n
index 1 2 i-1 n-2 n-1
index -n -n+1 -2 -1

Les séquences peuvent être coupées en tranches qui forment alors des sous séquences. sequence[i,j] forme la sequence de l’élement i inclus jusqu’à l’élément j exclu. Un troisième paramètre permet de faire varier le pas.

Exemples

sequence[1,3] ne contient que le 2° et 3° élément.
sequence[0:-1] contient tous les éléments sauf le dernier.
sequence[0:-1:2] prend un élément sur 2.
sequence[::-1] inverse la séquence.

Primitives

len retourne le nombre d’élements de la séquence
min renvoie l’élement à valeur minimale de la séquence
max renvoie l’élement à valeur maximale de la séquence
sum renvoie la somme des élements lorsque ceux ci sont additionnables

Il existe 2 grandes familles de séquences, les séquences immuables (string, unicode et tuple) et les séquences modifiables (liste).

Les strings (immuables)

  • Les string sont des valeurs alphanumériques, elles sont entourées de guillemets simples ou doubles ou de 3 guillemets simples ou doubles.
  • Une string est une séquence ordonnée d’éléments.
  • Une string n’est plus modifiable une fois instanciée.
  • Les strings sont des séquences de caractères, chaque caractère est codé sur 8 bits ce qui correspond à des valeurs de 0 à 255. Les valeurs de 0 à 127 sont les caractères de la tables ASCII ceux de 128 à 255 les caractères de la table ASCII étendue.
  • Il n’existe pas en python de type caractère, un caractère est une string de longueur 1.
  • En python 3, les strings sont portés par une nouvelle classe: les bytes.
  • Les strings sont des séquences, les différents éléments sont donc accessibles comme décrit plus haut.
  • Les strings sont des séquences immuables, leurs valeurs ne sont donc pas modifiables.

Primitives

chr renvoi le caractère dont le code ASCII est passé en paramètre
ord renvoi le code ASCII du caractère passé en paramètre

Liste des méthodes

>>> mot = 'Hello'
>>> dir(mot)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__',
'__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__',
'__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__rmod__', '__rmul__','__setattr__',
 '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split',
 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',
 'istitle','isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition',
 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip',
 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
 'translate', 'upper', 'zfill']

Les unicodes (immuables)

Le type unicode fonctionne de la même façon mais sur une plage de 32 bits. Ils sont standards en python 3.x. (format encodage utilisé par défaut).

>>> unichr(16000)
u'\u3e80'
>>> print(unichr(16000))>>> ord(u'€')
8364

Conversion entre string et unicode

La conversion est possible grâce aux méthodes encode et décode à l'aide d'un codec qui permet d’établir la correspondance entre les deux.

>>> encode = u'é'.encode('ISO-8859-15')
>>> print(encode)
é
>>> decode='é'.decode('ISO-8859-15')
>>> print(decode)
é

Formatage des chaines de caractères

>>> firstname = 'John'
>>> lastname = 'Cleese'
>>> print("Hello {}".format(firstname))
Hello John
>>> print("Hello {} {}".format(firstname, lastname))
Hello John Cleese

Il existe certaines expression pour modifier la valeur de l’argument. Exemple, pour les float, la syntaxe est .[P]f où P est un paramètre optionnel qui précise la précion utilisée.

>>> pi = 3.14141592654
>>> print ("pi vaut {:.2f}".format(pi))
>>> print ("pi vaut {0:.2f}".format(pi))

Les tuples (immuables)

  • Les tuples sont des séquences qui contiennent des éléments qui peuvent être hétérogènes.
  • Un tuple est encadré par des parenthèses et chaque élément est séparé par une virgule.
  • Une fois créé il est impossible de modifier sa valeur.

Exemple

>>> actors = ('John Cleese', 'Terry Gilliam', 'Michael Palin')
>>> heterogene = ('John Cleese', 2, u'Terry Gilliam')
>>> len(actors)
3
>>> actors[1]
'Terry Gilliam'
 
>>> actors[1] = 'Terry Jones'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Les listes (modifiable)

  • Les listes sont des séquences d’élements qui peuvent être hétérogènes et dont la valeur peut être modifiée après sa création.
  • Une liste est encadrée par des crochets et chaque élément est séparé par une virgule.
>>> liste_vide = []
>>> actors = ['John Cleese']
>>> len(actors)
1

Liste des méthodes

>>> dir(actors)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__',
 '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
 '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
 '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',
 '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
 '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__','__subclasshook__',
 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> actors.append('Terry Gilliam')
>>> actors
['John Cleese', 'Terry Gilliam']
>>> new_actors = ['Michael Palin', 'Terry Jones']
>>> actors.extend(new_actors)
>>> actors
['John Cleese', 'Terry Gilliam', 'Michael Palin', 'Terry Jones']
>>> actors.insert(2, 'Eric Idle')
>>> actors
['John Cleese', 'Terry Gilliam', 'Eric Idle', 'Michael Palin', 'Terry Jones']
>>> actors.remove('John Cleese')
>>> actors
['Terry Gilliam', 'Eric Idle', 'Michael Palin', 'Terry Jones']
>>> actors.pop(2)
'Michael Palin'
>>> actors
['Terry Gilliam', 'Eric Idle', 'Terry Jones']
>>> actors.index('Terry Jones')
2
>>> actors.append(actors[2])
>>> actors
['Terry Gilliam', 'Eric Idle', 'Terry Jones', 'Terry Jones']
>>> actors.count('Terry Jones')
2
>>> actors.sort()
>>> actors
['Eric Idle', 'Terry Gilliam', 'Terry Jones', 'Terry Jones']
>>> actors.reverse()
>>> actors
['Terry Jones', 'Terry Jones', 'Terry Gilliam', 'Eric Idle']

Les ensembles (type set)

Un ensemble est encadré par des accolades et chaque élément est séparé par une virgule.

>>> ensemble = {} #dictionnaire
>>> ensemble = {'John Cleese','Terry Gilliam'} # type set
>>> len(ensemble)
2
>>> ensemble.update({'John Cleese'})
>>> len(ensemble)
2

Les dictionnaires

  • Le mapping, appelé dictionnaire, est une collection d’éléments qui sont identifiés par des clefs uniques.
  • Un dictionnaire n’est pas ordonné.
  • Les clefs doivent être des objets immuables (chaines de caractère, entier, flottant…)
  • Les élements peuvent être hétérogènes
  • Un dictionnaire est encadrée par des accolades, chaque élement est séparé par une virgule, Chaque élement est préfixé par sa clef suivi de “:”.

Exemples

>>> dico_vide = {}
>>> cleese = {'firstname':'John', 'lastname':'Cleese', 'year_of_birth':1939, 'movies':['Monty Python, la vie de Brian', 'Un poisson nommé wanda']}
>>> len(cleese)
4
>>> cleese['firstname']
'John'
>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}

Liste des méthodes

>>> a = {}
>>> dir(a)
>>> ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
 '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__',
  '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__',
  '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

None

Type à valeur unique qui représente une absence de valeur.


Les booléens

  • Représentés par “True” ou “False”
  • Tout les types de valeur peuvent être interprétés de manière booléénne
type False True
int 0 les autres valeurs
float .0 les autres valeurs
list [] les listes non vides
tuple () les tuples non vides
dict {} les dicts non vides
type NONE None X

Synthèse des types

type exemple sequence modifiable
int 1 NON NON
float 1.0 NON NON
complex 1+1j NON NON
string “Hello” OUI NON
unicode u’Hello” OUI NON
tuple (“string”,1) OUI NON
list [“string”,1] OUI OUI
dict {“key”:”valeur”} NON OUI

Transtypage

primitive exemple description
str(el) str(1) ⇒ “1” retourne l’élement sous forme de string
int(el) int(“1”) ⇒ 1 retourne l’élement sous forme d’entier
float(el) float(“1”)⇒1.0 retourne l’élement sous forme de float
list(el) list(“1”)⇒[“1”] retourne l’élement sous forme de liste
tuple(el) tuple([1])⇒(1,) retourne l’élement sous forme de tuple

Les opérateurs

Opérateurs mathématiques

Addition +
Soustraction -
Multiplication *
Division /
Modulo (reste) %
Puissance **

Exemples

>>> 2+3
5
>>> 3-5
-2
>>> 2*7
14
>>> 'hello'*5
'hellohellohellohellohello'
>>> 'hello' + ' ' + 'world'
'hello world'
>>> 1/6
0
>>> 1.0/6
0.16666666666666666
>>> 10 % 3
1
>>> 2 * * 8
256

Opérateurs de comparaison

Inférieur <
Supérieur >
Inférieur ou égal <=
Supérieur ou égal >=
Egalité ==
Différent !=
est is
n'est pas is not
  • Une comparaison travaille sur deux objets et renvoie un résultat booléen.
  • Les strings sont immuables, l’affectation mémoire des deux objets est identique.

Exemple

>>> a = 'Hello'
>>> b = 'Hello'
>>> id(a)
39756736
>>> id(b)
39756736
>>> a is b
True

Autres opérateurs

Négation

>>> a = 10
>>> -a
-10

Appartenance

S’applique à toutes les séquences.

>>> 'y' in 'Terry'
True
>>> 1 in [0,1,2,3,4]
True

Trucs & astuces

Interroger le type d'un objet

>>> type(variable)

Lister les méthodes d'un objet

>>> mot = 'Hello'
>>> dir(mot)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__',
'__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__',
'__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__rmod__', '__rmul__','__setattr__',
 '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split',
 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',
 'istitle','isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition',
 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip',
 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
 'translate', 'upper', 'zfill']

all/bibles/langages/python/variables.txt · Dernière modification : de omeylhoc