0% ont trouvé ce document utile (0 vote)
45 vues8 pages

Extrait

Transféré par

Christ Nyakey
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
45 vues8 pages

Extrait

Transféré par

Christ Nyakey
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 2

Mots réservés et fonctions


internes

2.1 Mots réservés


Python 3 possède 33 mots réservés :

and class elif False if None


as continue else Finally import nonlocal
assert except for in not
def from is
break del global lambda or
pass True while yield
raise try with
return

On ne peut pas nommer une variable avec un mot réservé :

>>> global = 2300


SyntaxError: invalid syntax

2.2 Fonctions internes


Python 3 possède 72 fonctions internes (built-in functions) listées ci-
après.
30 Mots réservés et fonctions internes

abs bin callable delattr


all bool chr dict
any bytearray classmethod dir
ascii bytes compile divmod
complex
copyright
credits

enumerate filter getattr hasattr


eval float globals hash
exec format help
exit frozenset hex

id len map next


input license max
int list memoryview
isinstance locals min
issubclass
iter

object pow quit range


oct print repr
open property reversed
ord round

set tuple vars zip


setattr type
slice
sorted
staticmethod
str
sum
super
Comme avec la plupart des langages, l’appel à une fonction se fait
avec des parenthèses (à l’intérieur desquelles on fera passer les argu-
ments attendus) :

>>> abs(-56)
56
>>> int(4.0089)
2.3 Module builtins 31

4
>>> sum([4,6,11])
22

Note. Les fonctions quit, exit, copyright, license et credits ne


sont pas utilisées pour programmer. On laisse au lecteur le soin de
les tester.

2.3 Module b u i l t i n s
Voici une manipulation (expliquée au chapitre 30) permettant de
générer la liste des fonctions internes. On commence par importer le
module builtins qui contient toutes les fonctions internes :

>>> import builtins

On pourrait afficher la liste dir(builtins) des attributs de buil-


tins, mais cette dernière contient 149 items alors que seulement 72
d’entre eux nous intéressent. On va donc filtrer à l’aide de trois fonc-
tions : on va jeter les attributs qui ne sont pas appelables, les noms
qui commencent par un underscore, et les noms qui contiennent des
lettres capitales :

>>> def app(chaine):


x = getattr(builtins,chaine)
return callable(x)
>>> def su(chaine):
return chaine[0]!="_"
>>> capitales = set("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
>>> def sc(chaine):
return ( capitales & set(chaine) == set() )
>>> L = dir(builtins)
>>> [x for x in L if app(x) and sc(x) and su(x)]
[’abs’, ’all’, ’any’, ’ascii’, ’bin’,
’bool’, ’bytearray’, ’bytes’, ’callable’,
’chr’, ’classmethod’, ’compile’, ’complex’,
’copyright’, ’credits’, ’delattr’, ’dict’,
’dir’, ’divmod’, ’enumerate’, ’eval’, ’exec’,
’exit’, ’filter’, ’float’, ’format’, ’frozenset’,
’getattr’, ’globals’, ’hasattr’, ’hash’, ’help’,
32 Mots réservés et fonctions internes

’hex’, ’id’, ’input’, ’int’, ’isinstance’,


’issubclass’, ’iter’, ’len’, ’license’, ’list’,
’locals’, ’map’, ’max’, ’memoryview’, ’min’, ’next’,
’object’, ’oct’, ’open’, ’ord’, ’pow’, ’print’,
’property’, ’quit’, ’range’, ’repr’, ’reversed’,
’round’, ’set’, ’setattr’, ’slice’, ’sorted’,
’staticmethod’, ’str’, ’sum’, ’super’, ’tuple’,
’type’, ’vars’, ’zip’]

Nous retrouvons bien les 72 fonctions internes.

2.4 Méthodes internes


Python est un langage orienté objet : toutes les données sont des
objets. Chaque type d’objet (on dit chaque classe) possède des attri-
buts. Parmi ses attributs, il y a des fonctions. Ces fonctions sont
appelées méthodes. Les fonctions attribuées à str, par exemple,
s’appellent les méthodes de str. Pour lister les attributs de str,
on appelle dir(str) :

>>> L = dir(str)
>>> len(L)
76

Ainsi, chaque chaîne de caractères possède 76 attributs. Parmi eux : 1


attribut-donnée et 75 méthodes. Parmi ces 75 méthodes, 31 méthodes
spéciales (wrappers) et 44 méthodes ordinaires. On peut filtrer la
liste dir(str) afin de ne garder que les méthodes ordinaires : il suffit
(dans ce cas précis) de jeter tous les noms qui commencent par un
underscore :

>>> [x for x in L if x[0]!="_"]


[’capitalize’, ’casefold’, ’center’,
’count’, ’encode’, ’endswith’, ’expandtabs’,
’find’, ’format’, ’format_map’, ’index’,
’isalnum’, ’isalpha’, ’isdecimal’, ’isdigit’,
’isidentifier’, ’islower’, ’isnumeric’,
’isprintable’, ’isspace’, ’istitle’, ’isupper’,
’join’, ’ljust’, ’lower’, ’lstrip’, ’maketrans’,
’partition’, ’replace’, ’rfind’, ’rindex’,
’rjust’, ’rpartition’, ’rsplit’, ’rstrip’,
2.4 Méthodes internes 33

’split’, ’splitlines’, ’startswith’, ’strip’,


’swapcase’, ’title’, ’translate’, ’upper’, ’zfill’]

Toutes ces méthodes (appelées méthodes internes car elles sont défi-
nies en interne par Python) enrichissent considérablement le langage
Python.
Pour programmer, nous n’utilisons que les méthodes internes ordi-
naires (et éventuellement des attributs ordinaires).
L’appel d’une méthode suit une syntaxe précise : si on veut appeler
une méthode maméthode appartenant à un objet monobjet en faisant
passer les paramètres mesparamètres, on écrit :

>>> monobjet.maméthode(mesparamètres)

(on applique maméthode à monobjet.)


Exemple :

>>> "alexandre trijoulet".count("a")


2

Ci-dessous, le nombre d’attributs-données (spéciaux ou ordinaires) et


méthodes (spéciales ou ordinaires) par type usuel :
Type Données spé Données ordin Méthodes spé Méthodes ordin
int 1 4 60 4
float 1 2 48 5
complex 1 2 44 1
range 1 3 26 2
bool 1 4 60 4
str 1 0 31 44
list 2 0 32 11
tuple 1 0 29 2
set 2 0 35 17
frozenset 1 0 32 8
dict 2 0 26 11
function 11 0 23 0
fichier-bin 2 4 31 19
fichier-txt 3 8 30 16
bytes 1 0 29 38
bytearray 2 0 32 46
34 Mots réservés et fonctions internes

Nous verrons qu’une même méthode interne peut exister chez plu-
sieurs types différents.

2.5 Méthodes spéciales


Il y a quatre sortes d’opérateurs en Python : les opérations numé-
riques, les affectations-opérations, les comparaisons et les appels ou
accès à items.
opérateur syntaxe
+ x+y opérateur syntaxe
+x = x=y
* x*y += x+=y
- x-y *= x*=y
-x -= x-=y
/ x/y /= x/=y
// x//y //= x//=y
% x%y %= x%=y
** x**y **= x**=y
& x&y &= x&=y
| x|y |= x|=y
^ x^y ^= x^=y
~ ~x <<= x<<=y
<< x<<y >>= x>>=y
>> x>>y

opérateur syntaxe
is x is y
is not x is not y
opérateur syntaxe
in x in y
. x.y
not in x not in y
x.y=v
== x==y
[] x[y]
>= x>=y.
x[y]=v
> x>y
() x()
<= x<=y
< x<y
!= x!=y
2.5 Méthodes spéciales 35

Derrière chaque opérateur se cache une méthode (méthode spéciale).


Chaque opérateur sera décrit ultérieurement. Chaque méthode spé-
ciale, à l’instar des méthodes ordinaires, possède son identificateur,
et accepte la syntaxe d’appel habituelle

>>> monobjet.maméthode(mesparamètres)

même si elles ont plutôt vocation à être appelées avec le sym-


bole d’opération correspondant. À titre culturel (et afin de faciliter
l’exploration de Python), nous donnons ci-dessous le nom de cha-
cune de ces méthodes spéciales :
opération identifiant utilisation équivalent
+ __add__ x+y x.__add__(y)
+ __radd__ y+x x.__radd__(y)
+ __pos__ +x x.__pos__()
* __mul__ x*y x.__mul__(y)
* __rmul__ y*x x.__rmul__(y)
- __sub__ x-y x.__sub__(y)
- __rsub__ y-x x.__rsub__(y)
- __neg__ -x x.__neg__()
/ __truediv__ x/y x.__truediv__(y)
/ __rtruediv__ y/x x.__rtruediv__(y)
// __floordiv__ x//y x.__floordiv__(y)
// __rfloordiv__ y//x x.__rfloordiv__(y)
% __mod__ x%y x.__mod__(y)
% __rmod__ y%x x.__rmod__(y)
** __pow__ x**y x.__pow__(y)
** __rpow__ y**x x.__rpow__(y)
& __and__ x&y x.__and__(y)
& __rand__ y&x x.__rand__(y)
| __or__ x|y x.__or__(y)
| __ror__ y|x x.__ror__(y)
^ __xor__ x^y x.__xor__(y)
^ __rxor__ y^x x.__rxor__(y)
~ __invert__ ~x x.__invert__()
<< __lshift__ x<<y x.__lshift__(y)
<< __rlshift__ y<<x x.__rlshift__(y)
>> __rshift__ x>>y x.__rshift__(y)
>> __rrshift__ y>>x x.__rrshift__(y)
36 Mots réservés et fonctions internes

opération identifiant utilisation équivalent


= x=y
+= __iadd__ x+=y x.__iadd__(y)
*= __imul__ x*=y x.__imul__(y)
-= __isub__ x-=y x.__isub__(y)
/= __itruediv__ x/=y x.__itruediv__(y)
//= __ifloordiv__ x//=y x.__ifloordiv__(y)
%= __imod__ x%=y x.__imod__(y)
**= __ipow__ x**=y x.__ipow__(y)
&= __iand__ x&=y x.__iand__(y)
|= __ior__ x|=y x.__ior__(y)
^= __ixor__ x^=y x.__ixor__(y)
<<= __ilshift__ x<<=y x.__ilshift__(y)
>>= __irshift__ x>>=y x.__irshift__(y)

opération identifiant utilisation équivalent


is x is y
is not x is not y
in __contains__ x in y y__contains__(x)
not in x not in y
== __eq__ x==y x.__eq__(y)
>= __ge__ x>=y x.__ge__(y)
> __gt__ x<y x.__gt__(y)
<= __le__ x<=y x.__le__(y)
< __lt__ x<y x.__lt__(y)
!= __ne__ x!=y x.__ne__(y)

opération identifiant utilisation équivalent


. __getattribute__ x.y x.__getattribute__("y")
. avec = __setattr__ x.y=v x.__setattr__("y",v)
[] __getitem__ x[y] x.__getitem__(y)
[] avec = __setitem__ x[y]=v x.__setitem__(y,v)
() __call__ x() x.__call__()

Exemple :

>>> (10).__add__(3)

Vous aimerez peut-être aussi