2. Fonctions natives¶
L’interpréteur Python propose quelques fonctions et types natifs qui sont toujours disponibles. Ils sont listés ici par ordre alphabétique.
-
abs
(x)¶ Donne la valeur absolue d’un nombre. L’argument peut être un nombre entier ou un nombre à virgule flottante. Si l’argument est un nombre complexe, son module est donné.
-
all
(iterable)¶ Donne
True
si tous les éléments de iterable sont vrais (ou s’il est vide), équivaut à :def all(iterable): for element in iterable: if not element: return False return True
-
any
(iterable)¶ Donne
True
si au moins un élément de iterable est vrai. Faux est aussi donné dans le cas où iterable est vide, équivaut à :def any(iterable): for element in iterable: if element: return True return False
-
ascii
(object)¶ Donne, tout comme
repr()
, une chaîne contenant une représentation affichable d’un objet, en transformant les caractères non ASCII donnés parrepr()
en utilisant des séquences d’échappement\x
,\u
ou\U
. Cela génère une chaîne similaire à ce que renvoierepr()
dans Python 2.
-
bin
(x)¶ Convertit un nombre entier en binaire dans une chaîne. Le résultat est une expression Python valide. Si x n’est pas un
int
, il doit définir une méthode__index__()
donnant un nombre entier.
-
class
bool
([x])¶ Donne une valeur booléenne, c’est à dire soit
True
, soitFalse
. x est converti en utilisant la procédure standard d’évaluation de valeur de vérité. Si x est faux, ou omis, elle donneFalse
, sinon, elle donneTrue
. La classebool
hérite de la classeint
(voir Types numériques — int, float, complex). Il n’est pas possible d’en hériter. Ses seules instances sontFalse
etTrue
(voir Valeurs Booléennes).
-
class
bytearray
([source[, encoding[, errors]]])¶ Donne un nouveau tableau d’octets. La classe
bytearray
est une séquence muable de nombre entiers dans l’intervalle 0 <= x < 256. Il possède la plupart des méthodes des séquences variables, décrites dans Types de séquences muables, ainsi que la plupart des méthodes de la classebytes
, voir Opérations sur les bytes et bytearray.Le paramètre optionnel source peut être utilisé pour initialiser l”array de quelques manières différentes :
- Si c’est une chaîne, vous devez aussi donner les paramètre encoding pour l’encodage (et éventuellement errors). La fonction
bytearray()
convertit ensuite la chaîne en bytes via la méthodestr.encode()
. - Si c’est un entier, l”array aura cette taille et sera initialisé de null bytes.
- Si c’est un objet conforme à l’interface buffer, un buffer en lecture seule de l’objet sera utilisé pour initialiser l”array.
- Si c’est un itérable, il doit itérer sur des nombres entier dans l’intervalle
0 <= x < 256
, qui seront utilisés pour initialiser le contenu de l”array.
Sans argument, un array de taille vide est crée.
Voir Séquences Binaires — bytes, bytearray, memoryview et Objets bytearray.
- Si c’est une chaîne, vous devez aussi donner les paramètre encoding pour l’encodage (et éventuellement errors). La fonction
-
class
bytes
([source[, encoding[, errors]]])¶ Donne un nouvel objet bytes, qui est une séquence immuable de nombre entiers dans l’intervalle
0 <= x <= 256
. Lesbytes
est une version immuable debytearray
– avec les mêmes méthodes d’accès, et le même comportement lors de l’indexation ou la découpe.En conséquence, les arguments du constructeur sont les mêmes que pour
bytearray()
.Les objets bytes peuvent aussi être créés à partir de littéraux, voir Littéraux de chaînes de caractères et de suites d’octets.
Voir aussi Séquences Binaires — bytes, bytearray, memoryview, Bytes, et Opérations sur les bytes et bytearray.
-
callable
(object)¶ Donne
True
si l’argument object semble être appelable, sinonFalse
. Lorsqu’elle donne vrai, il reste une éventualité pour qu’un appel échoue, cependant, lorsqu’elle donne faux, il ne sera jamais possible d’appeler object. Notez que les classes sont appelables (appeler une classe donne une nouvelle instance). Les instances sont appelables si leur classe définit une méthode__call__()
.Nouveau dans la version 3.2: Cette fonction à d’abord été supprimée avec Python 3.0 puis elle à été remise dans Python 3.2.
-
chr
(i)¶ Renvoie la chaîne représentant un caractère dont le code de caractère Unicode est le nombre entier i. Par exemple,
chr(97)
renvoie la chaîne de caractères'a'
, tandis quechr(8364)
renvoie'€'
. Il s’agit de l’inverse deord()
.L’intervalle valide pour cet argument est de
0
à1114111
(0x10FFFF
en base 16). Une exceptionValueError
sera levée si i est en dehors de l’intervalle.
-
classmethod
(function)¶ Donne une méthode de classe pour fonction.
Une méthode de classe reçoit implicitement la classe en premier augment, tout comme une méthode d’instance reçoit l’instance. Voici comment déclarer une méthode de classe :
class C: @classmethod def f(cls, arg1, arg2, ...): ...
La forme
@classmethod
est un decorator – consultez la documentation sur la définition de fonctions dans Définition de fonctions pour plus de détails.Elle peut être appelée soit sur la classe (comme
C.f()
) ou sur une instance (commeC().f()
). L’instance est ignorée, sauf pour déterminer sa classe. Si la méthode est appelée sur une instance de classe fille, c’est la classe fille qui sera donnée en premier argument implicite.Les méthodes de classe sont différentes des méthodes statiques du C++ ou du Java. Si c’est elles sont vous avez besoin, regardez du côté de
staticmethod()
.Pour plus d’informations sur les méthodes de classe, consultez la documentation sur la hiérarchie des types standards dans Hiérarchie des types standards.
-
compile
(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)¶ Compile source en un objet code ou objet AST. Les objets code peuvent être exécutés par
exec()
oueval()
. source peut soit être une chaîne, un objet bytes, ou un objet AST. Consultez la documentation du moduleast
pour des informations sur la manipulation d’objets AST.L’argument filename doit nommer le fichier duquel le code à été lu. Donnez quelque chose de reconnaissable lorsqu’il n’a pas été lu depuis un fichier (typiquement
"<string>"
).L’argument mode indique quel type de code doit être compilé :
'exec'
si source est une suite d’instructions,'eval'
pour une seule expression, ou'single'
si il ne contient qu’une instruction interactive (dans ce dernier cas, les résultats d’expressions donnant autre chose queNone
seront affichés).Les arguments optionnels flags et dont_inherit contrôlent quelle instructions future (voir PEP 236) affecte la compilation de source. Si aucun des deux n’est présent (ou que les deux sont à 0) le code est compilé avec les mêmes instructions future que le code appelant
compile()
. Si l’argument flags est fourni mais que dont_inherit ne l’est pas (ou vaut 0), alors les instructions futures utilisées seront celles spécifiées par flags en plus de celles qui auraient été utilisées. Si dont_inherit est un entier différent de zéro, flags est utilisé seul – les instructions futures déclarées autour de l’appel à compile sont ignorées.Les instructions futures sont spécifiées par des bits, il est ainsi possible d’en spécifier plusieurs en les combinant avec un ou binaire. Les bits requis pour spécifier une certaine fonctionnalité se trouvent dans l’attribut
compiler_flag
de la classeFeature
du module__future__
.L’argument optimize indique le niveau d’optimisation du compilateur. La valeur par défaut est
-1
qui prend le niveau d’optimisation de l’interpréteur tel que reçu via l’option-O
. Les niveau explicites sont :0
(pas d’optimisation,__debug__
estTrue
),1
(lesassert
sont supprimés,__debug__
estFalse
) ou2
(les docstrings sont également supprimés).Cette fonction lève une
SyntaxError
si la source n’est pas valide, etValueError
si la source contient des octets null.Si vous voulez transformer du code Python en sa représentation AST, voyez
ast.parse()
.Note
Lors de la compilation d’une chaîne de plusieurs lignes de code avec les modes
'single'
ou'eval'
, celle-ci doit être terminée d’au moins un retour à la ligne. Cela permet de faciliter la distinction entre les instructions complètes et incomplètes dans le modulecode
.Modifié dans la version 3.2: Autorise l’utilisation de retours à la ligne Mac et Windows. Aussi, la chaîne donnée à
'exec'
n’a plus besoin de terminer par un retour à la ligne. Ajout du paramètre optimize.Modifié dans la version 3.5: Précédemment, l’exception
TypeError
était levée quand un caractère nul était rencontré dans source.
-
class
complex
([real[, imag]])¶ Donne un nombre complexe de valeur
real + imag\*1j
, ou convertit une chaîne ou un nombre en nombre complexe. Si le premier paramètre est une chaîne, il sera interprété comme un nombre complexe et la fonction doit être appelée dans second paramètre. Le second paramètre ne peut jamais être une chaîne. Chaque argument peut être de n’importe quel type numérique (même complexe). Si imag est omis, sa valeur par défaut est zéro, le constructeur effectue alors une simple conversion numérique comme le fontint
oufloat
. Si aucun argument n’est fourni, donne0j
.Note
Lors de la conversion depuis une chaîne, elle ne doit pas contenir d’espaces autour des opérateurs binaires
+
ou-
. Par exemplecomplex('1+2j')
est bon, maiscomplex('1 + 2j')
lève uneValueError
.Le type complexe est décrit dans Types numériques — int, float, complex.
-
delattr
(object, name)¶ C’est un cousin de
setattr()
. Les arguments sont un objet et une chaîne. La chaîne doit être le nom de l’un des attributs de l’objet. La fonction supprime l’attribut nommé, si l’objet l’y autorise. Par exempledelattr(x, 'foobar')
est l’équivalent dedel x.foobar
.
-
class
dict
(**kwarg) -
class
dict
(mapping, **kwarg) -
class
dict
(iterable, **kwarg) Créé un nouveau dictionnaire. L’objet
dict
est la classe du dictionnaire. Voirdict
et Les types de correspondances — dict pour vous documenter sur cette classe.Pour les autres conteneurs, voir les classes natives
list
,set
, ettyple
. ainsi que le modulecollections
.
-
dir
([object])¶ Sans arguments, elle donne la liste des noms dans l’espace de noms local. Avec un argument, elle essaye de donner une liste d’attributs valides pour cet objet.
Si l’objet à une méthode
__dir__()
, elle est appelée et doit donner une liste d’attributs. Cela permet aux objets implémentant__getattr__()
ou__getattribute__()
de personnaliser ce que donneradir()
.Si l’objet ne fournit pas de méthode
__dir__()
, la fonction fait de son mieux en rassemblant les informations de l’attribut__dict__
de l’objet, si défini, et depuis son type. La liste résultante n’est pas nécessairement complète, et peut être inadaptée quand l’objet a un__getattr__()
personnalisé.Le mécanisme par défaut de
dir()
se comporte différemment avec différents types d’objets, car elle préfère donner une information pertinente plutôt qu’exhaustive :- Si l’objet est un module, la liste contiendra les noms des attributs du module.
- Si l’objet est un type ou une classe, la liste contiendra les noms de ses attributs, et récursivement, des attributs de ses parents.
- Autrement, la liste contient les noms des attributs de l’objet, le nom des attributs de la classe, et récursivement des attributs des parents de la classe.
La liste donnée est triée par ordre alphabétique, par exemple :
>>> import struct >>> dir() # show the names in the module namespace ['__builtins__', '__name__', 'struct'] >>> dir(struct) # show the names in the struct module # doctest: +SKIP ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape: ... def __dir__(self): ... return ['area', 'perimeter', 'location'] >>> s = Shape() >>> dir(s) ['area', 'location', 'perimeter']
Note
Étant donné que
dir()
est d’abord fournie pour son côté pratique en mode interactif, elle a tendance à fournir un jeu intéressant de noms plutôt qu’un ensemble consistant et rigoureusement défini, son comportement peut aussi changer d’une version à l’autre. Par exemple, les attributs de méta-classes ne sont pas données lorsque l’argument est une classe.
-
divmod
(a, b)¶ Prend deux nombres (non complexes) et donne leur quotient et reste de leur division entière sous forme d’une paire de nombres. Avec des opérandes de types différents, les règles des opérateurs binaires s’appliquent. Pour deux entiers le résultat est le même que
(a // b, a % b)
. Pour des nombres à virgule flottante le résultat est(q, a % b)
, où q est généralementmath.floor(a / b)
mais peut valoir un de moins. Dans tous les casq * b + a % b
est très proche de a. Sia % b
est différent de zéro, il a le même signe que b, et0 <= abs(a % b) < abs(b)
.
-
enumerate
(iterable, start=0)¶ Donne un objet énumérant. iterable doit être une séquence, un iterator, ou tout autre objet supportant l’itération. La méthode
__next__()
de l’itérateur donné parenumerate()
donne un tuple contenant un compte (démarrant à start, 0 par défaut) et les valeurs obtenues de l’itération sur iterable.>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
Équivalent à :
def enumerate(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1
-
eval
(expression, globals=None, locals=None)¶ Les arguments sont : une chaîne, et optionnellement des locales et des globales. S’il est fourni, globals doit être un dictionnaire. S’il est fourni, locals peut être n’importe quel objet mapping.
L’argument expression est analysé et évalué comme une expression Python (techniquement, une condition list) en utilisant les dictionnaires globals et locals comme espaces de noms globaux et locaux. Si le dictionnaire globals est présent mais n’a pas de “__builtins__”, les builtins sont copiées dans globals avant qu”expression ne soit évalué. Cela signifie qu”expression à normalement un accès complet à tout le module
builtins
, et que les environnements restreints sont propagés. Si le dictionnaire locals est omis, sa valeur par défaut est le dictionnaire globals. Si les deux dictionnaires sont omis, l’expression est executée dans l’environnement oùeval()
est appelé. La valeur donnée par eval est le résultat de l’exressipn évaluée. Les erreurs de syntaxe sont rapportées via des exceptions. Exemple :>>> x = 1 >>> eval('x+1') 2
Cette fonction peut aussi être utilisée pour exécuter n’importe quel objet code (tel que ceux créés par
compile()
). Dans ce cas, donnez un objet code plutôt qu’une chaîne. Si l’objet code à été compilé avec'exec'
en argument pour mode,eval()
donneraNone
.Conseils : L’exécution dynamique d’instructions est gérée par la fonction
exec()
. Les fonctionsglobals()
etlocals()
donnent respectivement les dictionnaires globaux et locaux, qui peuvent être utiles lors de l’usage deeval()
etexec()
.Utilisez
ast.literal_eval()
si vous avez besoin d’une fonction qui peut évaluer en toute sécurité des chaînes avec des expressions ne contenant que des valeurs littérales.
-
exec
(object[, globals[, locals]])¶ Cette fonction permet l’exécution dynamique de code Python. object doit être soit une chaîne soit un objet code. Si c’est une chaîne, elle est d’abord analysée en une suite d’instructions Python qui sont ensuite exécutés (sauf erreur de syntaxe). [1] Si c’est un objet code, il est simplement exécuté. dans tous les cas, le code fourni doit être valide selon les mêmes critères que s’il était un script dans un fichier (voir la section « File Input » dans le manuel). Gardez en tête que les mots clefs
return
etyield
ne peuvent pas être utilisés en dehors d’une fonction, même dans du code passé àexec()
. La fonction donneNone
.Dans tous les cas, si les arguments optionnels sont omis, le code est exécuté dans le contexte actuel. Si seul globals est fourni, il doit être un dictionnaire qui sera utilisé pour les globales et les locales. Si les deux sont fournis, ils sont utilisés respectivement pour les variables globales et locales. locales peut être n’importe quel objet
mapping
. Souvenez vous qu’au niveau d’un module, les dictionnaires des locales et des globales ne sont qu’un. Siexec
reçoit deux objets distincts dans globals et locals, le code sera exécuté comme s’il était inclus dans une définition de classe.Si le dictionnaire globals ne contient pas de valeur pour la clef
__builtins__
, une référence au dictionnaire du modulebuiltins
y est inséré. Cela vous permet de contrôler quelles fonctions natives sont exposées au code exécuté en insérant votre propre dictionnaire__builtins__
dans globals avant de le donner àexec()
.
-
filter
(function, iterable)¶ Construit un itérateur depuis les éléments d”iterable pour lesquels function donne vrai. iterable peut aussi bien être une séquence, un conteneur qui supporte l’itération, ou un itérateur. Si function est
None
, la fonction identité est prise, c’est à dire que tous les éléments faux d”iterable sont supprimés.Notez que
filter(fonction, iterable)
est l’équivalent du générateur(item for item in iterable if fonction(item))
si fonction n’est pasNone
et de(item for item in iterable if item)
si function estNone
.Voir
itertools.filterfalse()
pour la fonction complémentaire qui donne les éléments d”iterable pour lesquels fonction donneFalse
.
-
class
float
([x])¶ Donne un nombre a virgule flottante depuis un nombre ou une chaîne x.
Si l’argument est une chaîne, elle devrait contenir un nombre décimal, éventuellement précédé d’un signe, et pouvant être entouré d’espaces. Le signe optionnel peut être
'+'
ou'-'
. Un signe'+'
n’a pas d’effet sur la valeur produite. L’argument peut aussi être une chaîne représentant un NaN (Not-a-Number), l’infini positif, ou l’infini négatif. Plus précisément, l’argument doit se conformer à la grammaire suivante, après que les espaces en début et fin de chaîne aient été retirés :sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" numeric_value ::=
floatnumber
|infinity
|nan
numeric_string ::= [sign
]numeric_value
Ici
floatnumber
est un nombre a virgule flottante littéral Python, décrit dans Nombres à virgule flottante littéraux. La casse n’y est pas significative, donc, par exemple,"inf"
," Inf"
,"INFINITY"
, et" iNfiNity"
sont tous des orthographes valides pour un infini positif.Autrement, si l’argument est un entier ou un nombre à virgule flottante, un nombre à virgule flottante de même valeur (en accord avec la précision des nombres à virgule flottante de Python) est donné. Si l’argument est en dehors de l’intervalle d’un nombre a virgule flottante pour Python,
OverflowError
est levée.Pour un objet Python
x
,float(x)
est délégué àx.__float__()
.Dans argument,
0.0
est donné.Exemples :
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
Le type float est décrit dans Types numériques — int, float, complex.
-
format
(value[, format_spec])¶ Convertit une valeur en sa représentation « formatée », tel que décrit par format_spec. L’interprétation de format_spec dépend du type de la valeur, cependant il existe une syntaxe standard utilisée par la plupart des types natifs : Mini-langage de spécification de format.
Par défaut, format_spec est une chaîne vide qui généralement donne le même effet qu’appeler
str(value)
.Un appel à
format(value, format_spec)
est transformé entype(value).__format__(value, format_spec)
, qui contourne le dictionnaire de l’instance lors de la recherche de la méthode__fornat__()
. Une exceptionTypeError
est levée si la recherche de la méthode atteintobject
et que format_spec n’est pas vide, ou si soit format_spec soit la le résultat ne sont pas des chaînes.Modifié dans la version 3.4:
object().__format__(format_spec)
lèveTypeError
si format_spec n’est pas une chaîne vide.
-
class
frozenset
([iterable]) Donne un nouveau
frozenset
, dont les objets sont éventuellement tirés d”iterable.frozenset
est une classe native. Voirfrozenset
et Types d’ensembles — set, frozenset pour leurs documentation.Pour d’autres conteneurs, voyez les classes natives
set
,list
,tuple
, etdict
, ainsi que le modulecollections
.
-
getattr
(object, name[, default])¶ Donne la valeur de l’attribut nommé name de l’objet object. name doit être une chaîne. Si la chaîne est le nom d’un des attributs de l’objet, le résultat est la valeur de cet attribut. Par exemple,
getattr(x, 'foobar')
est équivalent àx.foobar
. Si l’attribut n’existe pas, et que default est fourni, il est renvoyé, sinon l’exceptionAttributeError
est levée.
-
globals
()¶ Donne une représentation de la table de symboles globaux sous forme d’un dictionnaire. C’est toujours le dictionnaire du module courant (dans une fonction ou méthode, c’est le module où elle est définie, et non le module d’où elle est appelée).
-
hasattr
(object, name)¶ Les arguments sont : un objet et une chaîne. Le résultat est
True
si la chaîne est le nom d’un des attributs de l’objet, sinonFalse
. (L’implémentation appellegetattr(object, name)
et regarde si une exceptionAttributeError
à été levée.)
-
hash
(object)¶ - Donne la valeur de hash d’un objet (s’il en a une). Les valeurs de hash sont des entiers. Elles sont utilisées pour comparer rapidement des clefs de dictionnaire lors de leur recherche. Les valeurs numériques égales ont le même hash (même si leurs types sont différents, comme pour
1
et1.0
).Note
For objects with custom
__hash__()
methods, note thathash()
truncates the return value based on the bit width of the host machine. See__hash__()
for details.
-
help
([object])¶ Invoque le système d’aide natif. (Cette fonction est destinée à l’usage en mode interactif.) Soi aucun argument n’est fourni, le système d’aide démarre dans l’interpréteur. Si l’argument est une chaîne, un module, une fonction, une classe, une méthode, un mot clef, ou un sujet de documentation pourtant ce nom est recherché, et une page d’aide est affichée sur la console. Si l’argument est d’un autre type, une page d’aide sur cet objet est générée.
Cette fonction est ajoutée à l’espace de noms natif par le module
site
.
-
hex
(x)¶ Convertis un nombre entier en sa représentation hexadécimale, en minuscule, préfixée par « 0x », par exemple :
>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
Si
x
n’est pas un objet Pythonint
, il doit définir une méthode__index__
donnant un entier.Voir aussi
int()
pour convertir une chaîne hexadécimale en un entier en lui spécifiant 16 comme base.Note
Pour obtenir une représentation hexadécimale sous forme de chaîne d’un nombre à virgule flottante, utilisez la méthode
float.hex()
.
-
id
(object)¶ Donne l“« identité » d’un objet. C’est un nombre entier garanti unique et constant pour cet objet durant sa durée de vie. Deux objets sont les durées de vie ne se chevauchent pas peuvent partager le même
id()
.CPython implementation detail: This is the address of the object in memory.
-
input
([prompt])¶ Si l’argument prompt est donné, il est écrit sur la sortie standard sans le retour à la ligne final. La fonction lis ensuite une ligne sur l’entrée standard et la convertit en chaîne (supprimant le retour à la ligne final) quelle donne. Lorsque EOF est lu,
EOFError
est levée. Exemple :>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Si le module
readline
est chargé,input()
l’utilisera pour fournir des fonctionnalités d’édition et d’historique élaborées.
-
class
int
(x=0)¶ -
class
int
(x, base=10) Donne un entier construit depuis un nombre ou une chaîne x, ou
0
si aucun argument n’est fourni. Si x est un nombre,__int__()
est donné. Les nombres à virgule flottante sont tronquées vers zéro.If x is not a number or if base is given, then x must be a string,
bytes
, orbytearray
instance representing an integer literal in radix base. Optionally, the literal can be preceded by+
or-
(with no space in between) and surrounded by whitespace. A base-n literal consists of the digits 0 to n-1, witha
toz
(orA
toZ
) having values 10 to 35. The default base is 10. The allowed values are 0 and 2–36. Base-2, -8, and -16 literals can be optionally prefixed with0b
/0B
,0o
/0O
, or0x
/0X
, as with integer literals in code. Base 0 means to interpret exactly as a code literal, so that the actual base is 2, 8, 10, or 16, and so thatint('010', 0)
is not legal, whileint('010')
is, as well asint('010', 8)
.Le type des entiers est décrit dans Types numériques — int, float, complex.
Modifié dans la version 3.4: Si base n’est pas une instance d”
int
et que base a une méthodebase.__index__
, cette méthode est appelée pour obtenir un entier pour cette base. Les versions précédentes utilisaientbase.__int__
au lieu debase.__index__
.
-
isinstance
(object, classinfo)¶ Donne
True
si object est une instance de classinfo, ou d’une de ses classes filles, directe, indirecte, ou virtuelle. Si object n’est pas un objet du type donné, la fonction donne toujoursFalse
. Si classinfo est un tuple de types (ou récursivement, d’autres tuples), donneTrue
si object est une instance de n’importe quel de ces types. Si classinfo n’est ni un type ni un tuple de types (et récursivement), une exceptionTypeError
est levée.
-
issubclass
(class, classinfo)¶ Donne
True
si class est une classe fille (directe, indirecte, ou virtual) de classinfo. Une classe est considérée sous-classe d’elle même. classinfo peut être un tuple de classes, dans ce cas la vérification sera faite pour chaque classe de classinfo. Dans tous les autres cas,TypeError
est levée.
-
iter
(object[, sentinel])¶ Donne un objet iterator. Le premier argument est interprété très différemment en fonction de la présence du second argument. Sans second argument, object doit être une collection d’objets supportant le protocole d’itération (la méthode
__iter__()
), ou supportant le protocole des séquences (la méthodegetitem()
, avec des nombres entiers commençant par0
comme argument). S’il ne supporte aucun de ces protocoles,TypeError
est levée. Si le second argument sentinel est fourni, objet doit être appelable. L’itérateur créé dans ce cas appellera object dans argument à chaque appel de__next__()
, si la valeur reçue est égale à sentinelStopIteration
est levée, autrement la valeur est donnée.Voir aussi Les types itérateurs.
Une autre application utile de la deuxième forme de
iter()
est de lire les lignes d’un fichier jusqu’à ce qu’un certaine ligne soit atteinte. L’exemple suivant lis un fichier jusqu’à ce quereadline()
donne une ligne vide :with open('mydata.txt') as fp: for line in iter(fp.readline, ''): process_line(line)
-
len
(s)¶ Donne la longueur (nombre d’éléments) d’un objet. L’argument peut être une séquence (tel qu’une chaîne, un objet
bytes
,tuple
,list
ourange
) ou une collection (tel qu’undict
,set
oufrozenset
).
-
class
list
([iterable]) Plutôt qu’être une fonction,
list
est en fait un type de séquence variable, tel que documenté dans Listes et Types séquentiels — list, tuple, range.
-
locals
()¶ Met à jour et donne un dictionnaire représentant la table des symboles locaux. Les variables libres sont données par
locals()
lorsqu’elle est appelée dans le corps d’une fonction, mais pas dans le corps d’une classe.Note
Le contenu de ce dictionnaire ne devrait pas être modifié, les changements peuvent ne pas affecter les valeurs des variables locales ou libres utilisées par l’interpréteur.
-
map
(function, iterable, ...)¶ Donne un itérateur appliquant function à chaque élément de iterable, et donnant ses résultats au fur et à mesure avec
yield
. Si d’autres iterable sont fournis, function doit prendre autant d’arguments, et sera appelée avec les éléments de tous les itérables en parallèle. Avec plusieurs itérables, l’itération s’arrête avec l’itérable le plus court. Pour les cas où les arguments seraient déjà rangés sous forme de tuples, voiritertools.starmap()
.
-
max
(iterable, *[, key, default])¶ -
max
(arg1, arg2, *args[, key]) Donne l’élément le plus grand dans un itérable, ou l’argument le plus grand parmi au moins deux arguments.
Si un seul argument positionnel est fourni, il doit être iterable. Le plus grand élément de l’itérable est donné. Si au moins deux arguments positionnels sont fournis, l’argument le plus grand sera donné.
Elle accepte deux arguments par mot clef optionnels. L’argument key spécifie une fonction à un argument permettant de trier comme pour
list.sort()
. L’argument default quant à lui fournit un objet à donner si l’itérable fourni est vide. Si l’itérable est vide et que default n’est pas fourni,ValueError
est levée.Si plusieurs éléments représentent la plus grande valeur, le premier rencontré est donné. C’est cohérent avec d’autres outils préservant une stabilité lors du tri, tel que
sorted(iterable, key=keyfunc, reverse=True)[0]
etheapq.nlargest(1, iterable, key=keyfunc)
.Nouveau dans la version 3.4: L’argument exclusivement par mot clef default.
-
memoryview
(obj) Donne une « vue mémoire » (memory view) créée depuis l’argument. Voir Vues de mémoires pour plus d’informations.
-
min
(iterable, *[, key, default])¶ -
min
(arg1, arg2, *args[, key]) Donne le plus petit élément d’un itérable ou le plus petit d’au moins deux arguments.
Si un seul argument est fourni, il doit être iterable. Le plus petit élément de l’itérable est donné. Si au moins deux arguments positionnels sont fournis le plus petit argument positionnel est donné.
Elle accepte deux arguments par mot clef optionnels. L’argument key spécifie une fonction à un argument permettant de trier comme pour
list.sort()
. L’argument default quant à lui fournit un objet à donner si l’itérable fourni est vide. Si l’itérable est vide et que default n’est pas fourni,ValueError
est levée.Si plusieurs éléments sont minimaux, la fonction donne le premier. C’est cohérent avec d’autres outils préservant une stabilité lors du tri, tel que
sorted(iterable, key=keyfunc)[0]
etheapq.nsmallest(1, iterable, key=keyfunc)
.Nouveau dans la version 3.4: L’argument exclusivement par mot clef default.
-
next
(iterator[, default])¶ Donne l’élément suivant d”iterator en appelant sa méthode
__next__()
. Si default est fourni, il sera donné si l’itérateur est épousé, sinonStopIteration
est levée.
-
class
object
¶ Donne un objet vide.
object
est la classe parente de toute les classes. C’est elle qui porte les méthodes communes à toutes les instances de classes en Python. Cette fonction n’accepte aucun argument.
-
oct
(x)¶ Convertit un entier en sa représentation octale dans une chaîne. Le résultat est une expression Python valide. Si x n’est pas un objet
int
de Python, il doit définir une méthode__index__()
qui donne un entier.
-
open
(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)¶ Ouvre file et donne un file object correspondant. Si le fichier ne peut pas être ouvert, une
OSError
est levée.file est soit une chaîne soit un objet
bytes
donnant le chemin (absolu ou relatif au dossier courant) du fichier à ouvrir, ou un entier, descripteur de fichier à encapsuler. (Si un descripteur de fichier est donné, il est fermé lorsque l’objet I/O donné est fermé, sauf si closefd est fourni etFalse
.)mode est une chaîne optionnelle permettant de spécifier dans quel mode le fichier est ouvert. Par défaut, mode vaut
'r'
qui signifie « ouvrir en lecture pour du texte ».'w'
est aussi une valeur classique, permettant d’écrire (vidant le fichier s’il existe), ainsi que'x'
permettant une création exclusive et'a'
pour ajouter à la fin du fichier (qui sur certains systèmes Unix signifie que toutes les écritures seront des ajouts en fin de fichier peu importe la position demandée). En mode texte, si encoding n’est pas spécifié l’encodage utilisé est dépendant de la plateforme :locale.getpreferredencoding(False)
est appelée pour obtenir l’encodage de la locale actuelle. (Pour lire et écrire des octets bruts, utilisez le mode binaire en laissant encoding non spécifié.) Les modes disponibles sont :Caractère Signification 'r'
ouvre en lecture (par défaut) 'w'
ouvre en écriture, tronquant le fichier 'x'
ouvre pour une création exclusive, échouant si le fichier existe déjà 'a'
ouvre en écriture, ajoutant à la fin du fichier s’il existe 'b'
mode binaire 't'
mode texte (par défaut) '+'
ouvre un fichier pour le modifier (lire et écrire) 'U'
mode universal newlines (obsolète) Les mode par défaut est
'r'
(ouvrir pour lire du texte, synonyme de'rt'
). Pour un accès en lecture écriture binaire, le mode'w+b'
ouvre et vide le fichier.'r+b'
ouvre le fichier sans le vider.Tel que mentionné dans Aperçu, Python fait la différence entre les I/O binaire et texte. Les fichiers ouverts en mode binaire (avec
'b'
dans mode) donnent leur contenu sous forme debytes
sans décodage. En mode texte (par défaut, ou lorsque't'
est dans le mode), le contenu du fichier est donné sous forme destr
, les octets ayant été décodés au préalable en utilisant un encodage déduit de l’environnement ou encoding s’il est donné.Note
Python ne dépend pas de l’éventuelle notion de fichier texte du système sous-jacent, tout est effectué par Python lui même, et ainsi indépendant de la plateforme.
buffering est un entier optionnel permettant de configurer l’espace tampon. Donnez 0 pour désactiver l’espace tampon (seulement autorisé en mode binaire), 1 pour avoir un buffer travaillant ligne par ligne (seulement disponible en mode texte), ou un entier supérieur à 1 pour donner la taille en octets d’un tampon de taille fixe. Sans l’argument buffering, les comportements par défaut sont les suivants :
- Les fichiers binaires sont les dans un tampon de taille fixe, dont la taille est choisie par une heuristique essayant de déterminer la taille des blocs du système sous-jacent, ou en utilisant par défaut
io.DEFAULT_BUFFER_SIZE
. Sur de nombreux systèmes, le tampon sera de 4096 ou 8192 octets. - Les fichiers texte « interactifs » (fichiers pour lesquels
io.IOBase.isatty()
donneTrue
) utilisent un tampon par lignes. Les autres fichiers texte sont traités comme les fichiers binaires.
encoding est le nom de l’encodage utilisé pour encoder ou décoder le fichier. Il doit seulement être utilisé en mode texte. L’encodage par défaut dépend de la plateforme (ce que
locale.getpreferredencoding()
donne), mais n’importe quel text encoding supporté par Python peut être utilisé. Voircodecs
pour une liste des encodages supportés.errors is an optional string that specifies how encoding and decoding errors are to be handled—this cannot be used in binary mode. A variety of standard error handlers are available (listed under Error Handlers), though any error handling name that has been registered with
codecs.register_error()
is also valid. The standard names include:'strict'
pour lever uneValueError
si une erreur d’encodage est rencontrée. La valeur par défaut,None
, a le même effet.'ignore'
ignore les erreurs. Notez qu’ignorer les erreurs d’encodage peut mener à des pertes de données.'replace'
insère un marqueur de substitution (tel que'?'
) en place des données mal formées.'surrogateescape'
représentera chaque octet incorrect par un code caractère de la zone Private Use Area d’Unicode, de U+DC80 à U+DCFF. Ces codes caractères privés seront ensuite transformés dans les mêmes octets erronés si le gestionnaire d’erreursurrogateescape
est utilisé lors de l’écriture de la donnée. C’est utile pour traiter des fichiers d’un encodage inconnu.'xmlcharrefreplace'
est seulement supporté à l’écriture vers un fichier. Les caractères non gérés par l’encodage sont remplacés par une référence de caractère XML&#nnn;
.'backslashreplace'
remplace les données mal formées par des séquences d’échappement Python (utilisant des backslash).'namereplace'
(aussi supporté lors de l’écriture) remplace les caractères non supportés par des séquences d’échappement\N{...}
.
newline contrôle comment le mode universal newlines fonctionne (seulement en mode texte). Il eut être
None
,''
,'\n'
,'\r'
, et'\r\n'
. Il fonctionne comme suit :- Lors de la lecture, si newline est
None
, le mode universal newlines est activé. Les lignes lues peuvent terminer par'\n'
,'\r'
, ou'\r\n'
, qui sont remplacés par'\n'
, avant d’être données à l’appelant. S’il vaut'*'
, le mode universal newline est activé mais les fin de lignes ne sont pas remplacés. S’il a n’importe quel autre valeur autorisée, les lignes sont seulement terminées par la chaîne donnée, qui est rendue tel qu’elle. - Lors de l’écriture, si newline est
None
, chaque'\n'
est remplacé par le séparateur de lignes par défaut du systèmeos.linesep
. Si newline est*
ou'\n'
aucun remplacent n’est effectué. Si newline est un autre caractère valide, chaque'\n'
sera remplacé par la chaîne donnée.
Si closefd est
False
et qu’un descripteur de fichier est fourni plutôt qu’un nom de fichier, le descripteur de fichier sera laissé ouvert lorsque le fichier sera fermé. Si un nom de fichier est donné, closefd doit resterTrue
(la valeur par défaut) sans quoi une erreur est levée.Un opener personnalisé peut être utilisé en fournissant un appelable comme opener. Le descripteur de fichier de cet objet fichier sera alors obtenu en appelant opener avec (file, flags). opener doit donner un descripteur de fichier ouvert (fournir
os.open
en temps qu”opener aura le même effet que donnerNone
).Il n’est pas possible d’hériter du fichier nouvellement créé.
L’exemple suivant utilise le paramètre dir_fd de la fonction
os.open()
pour ouvrir un fichier relatif au dossier courant :>>> import os >>> dir_fd = os.open('somedir', os.O_RDONLY) >>> def opener(path, flags): ... return os.open(path, flags, dir_fd=dir_fd) ... >>> with open('spamspam.txt', 'w', opener=opener) as f: ... print('This will be written to somedir/spamspam.txt', file=f) ... >>> os.close(dir_fd) # don't leak a file descriptor
Le type de file object donné par la fonction
open()
dépend du mode. Lorsqueopen()
est utilisé pour ouvrir un fichier en mode texte (w
,r
,wt
,rt
, etc.), il donne une classe fille deio.TextIOBase
(spécifiquement :io.TextIOWrapper
). Lors de l’ouverture d’un fichier en mode binaire avec tampon, la classe donnée sera une fille deio.BufferedIOBase
. La classe exacte varie : en lecture en mode mode binaire elle donne uneio.BufferedReader
, en écriture et ajout en mode binaire c’est uneio.BufferedWriter
, et en lecture/écriture, c’est uneio.BufferedRandom
. Lorsque le tampon est désactivé, le flux brut, une classe fille deio.RawIOBase
,io.FileIO
est donnée.Consultez aussi les modules de gestion de fichiers tel que
fileinput
,io
(oùopen()
est déclarée),os
,os.path
,tmpfile
, etshutil
.Modifié dans la version 3.3: Le paramètre opener est ajouté. Le mode
'x'
est ajouté.IOError
est maintenant alias deOSError
.FileExistsError
est maintenant levée si le fichier est ouvert en création exclusive ('x'
) alors qu’il existe.Modifié dans la version 3.4: Il n’est plus possible d’hériter de file.
Déprécié depuis la version 3.4, sera supprimé dans la 4.0 : Le mode “U”.
Modifié dans la version 3.5: Si l’appel système est interrompu et que le gestionnaire de signal ne lève aucune exception, la fonction réessaye l’appel système au lieu de lever une
InterruptedError
(voir la PEP 475 à propos du raisonnement).Modifié dans la version 3.5: Le gestionnaire d’erreurs
'namereplace'
a été ajouté.- Les fichiers binaires sont les dans un tampon de taille fixe, dont la taille est choisie par une heuristique essayant de déterminer la taille des blocs du système sous-jacent, ou en utilisant par défaut
-
ord
(c)¶ Renvoie le nombre entier représentant le code Unicode du caractère représenté par la chaîne donnée. Par exemple,
ord('a')
renvoie le nombre entier97
etord('€')
(symbole Euro) renvoie8364
. Il s’agit de l’inverse dechr()
.
-
pow
(x, y[, z])¶ Donne x puissance y, et si z est présent, donne x puissance y modulo z (calculé de manière plus efficiente que
pow(x, y) % z
). La forme à deux arguments est équivalent àx**y
.Les arguments doivent être de types numériques. Avec des opérandes de différents types, les mêmes règles de coercition que celles des opérateurs arithmétiques binaires s’appliquent. Pour des opérandes de type
int
, le résultat sera de même type que les opérandes (après coercition) sauf si le second argument est négatif, dans ce cas, les arguments sont convertis enfloat
, et le résultat sera unfloat
aussi. Par exemple,10**2
donne100
, alors que10**-2
donne0.01
. Si le second argument est négatif, le troisième doit être omis. Si z est fourni, x et y doivent être des entiers et y positif.
-
print
(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)¶ Print objects to the text stream file, separated by sep and followed by end. sep, end, file and flush, if present, must be given as keyword arguments.
Tous les arguments positionnels sont convertis en chaîne comme le fait
str()
, puis écrits sur le flux, séparés par sep et terminés par end. sep et end doivent être des chaînes, ouNone
, indiquant de prendre les valeurs par défaut. Si aucun objects n’est donnéprint()
écris seulement end.L’argument file doit être un objet avec une méthode
write(string)
; s’il n’est pas fourni, ou vautNone
,sys.stdout
sera utilisé. Puisque les arguments affichés sont convertis en chaîne,print()
ne peut pas être utilisé avec des fichiers ouverts en mode binaire. Pour ceux ci utilisez plutôtfile.write(...)
.Que la sortie utilise un buffer ou non est souvent décidé par file, mais si l’argument flush est vrai, le tampon du flux est vidé explicitement.
Modifié dans la version 3.3: Ajout de l’argument par mot clef flush.
-
class
property
(fget=None, fset=None, fdel=None, doc=None)¶ Donne un attribut propriété.
fget est une fonction permettant d’obtenir la valeur d’un attribut. fset est une fonction pour en définir la valeur. fdel quand à elle permet de supprimer la valeur d’un attribut, et doc créé une docstring pour l’attribut.
Une utilisation typique : définir un attribut managé
x
:class C: def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.")
Si c est une instance de C,
c.x
appellera le getter,c.x = value
invoquera le setter, etdel x
le deleter.S’il est donné, doc sera la docstring de l’attribut. Autrement la propriété copiera celle de fget (si elle existe). Cela rend possible la création de propriétés en lecture seule en utilisant simplement
property()
comme un decorator :class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltage
Le décorateur
@property
transforme la méthodevoltage()
en un getter d’un attribut du même nom, et donne « Get the current voltage » comme docstring de voltage.Un objet propriété à les méthodes
getter
,setter
etdeleter
utilisables comme décorateurs créant une copie de la propriété avec les accesseurs correspondants définis par la fonction de décoration. C’est plus clair avec un exemple :class C: def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
Ce code est l’exact équivalent du premier exemple. Soyez attentifs à bien donner aux fonctions additionnelles le même nom que la propriété (
x
dans ce cas.)L’objet propriété donné à aussi les attributs
fget
,fset
etfdel
correspondant correspondants aux arguments du constructeur.Modifié dans la version 3.5: Les docstrings des objets propriété peuvent maintenant être écrits.
-
range
(stop) -
range
(start, stop[, step]) Plutôt qu’être une fonction,
range
est en fait une séquence immuable, tel que documenté dans Ranges et Types séquentiels — list, tuple, range.
-
repr
(object)¶ Donne une chaîne contenant une représentation affichable de l’objet. Pour de nombreux types, cette fonction essaye de donner une chaîne qui donnera à son tour un objet de mène valeur lorsqu’elle est passée à
eval()
, sinon la représentation sera une chaîne entourée de chevrons contenant le nom du type et quelques informations supplémentaires souvent le nom et l’adresse de l’objet. Une classe peut contrôler ce que cette fonction donne pour ses instances en définissant une méthode_repr__()
.
-
reversed
(seq)¶ Donne un iterator inversé. seq doit être un objet ayant une méthode
__reverse__()
ou supportant le protocole séquence (la méthode__len__()
et la méthode__getitem__()
avec des arguments entiers commençant à zéro).
-
round
(number[, ndigits])¶ Return number rounded to ndigits precision after the decimal point. If ndigits is omitted or is
None
, it returns the nearest integer to its input.For the built-in types supporting
round()
, values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice (so, for example, bothround(0.5)
andround(-0.5)
are0
, andround(1.5)
is2
). Any integer value is valid for ndigits (positive, zero, or negative). The return value is an integer if called with one argument, otherwise of the same type as number.For a general Python object
number
,round(number, ndigits)
delegates tonumber.__round__(ndigits)
.Note
Le comportement de
round()
avec les nombres à virgule flottante peut être surprenant : par exempleround(2.675, 2)
donne2.67
au lieu de2.68
. Ce n’est pas un bug, mais dû au fait que la plupart des fractions de décimaux ne peuvent pas être représentés exactement en nombre a virgule flottante. Voir Arithmétique en nombres à virgule flottante : problèmes et limites pour plus d’information.
-
class
set
([iterable]) Donne un nouveau
set
, dont les éléments peuvent être extraits d”iterable.set
est une classe native. Voirset
et Types d’ensembles — set, frozenset pour la documentation de cette classe.D’autres conteneurs existent, typiquement :
frozenset
,list
,tuple
, etdict
, ainsi que le modulecollections
.
-
setattr
(object, name, value)¶ C’est le complément de
getattr()
. Les arguments sont : un objet, une chaîne, et une valeur de type arbitraire. La chaîne peut nommer un attribut existant ou un nouvel attribut. La fonction assigne la valeur à l’attribut, si l’objet l’autorise. Par exemple,setattr(x, 'foobar', 123)
équivaut àx.foobar = 123
.
-
class
slice
(stop)¶ -
class
slice
(start, stop[, step]) Donne un objet
slice
représentant un ensemble d’indices spécifiés parrange(start, stop, step)
. Les arguments start et step valentNone
par défaut. Les objets slice (tranches) ont les attributs suivants en lecture seule :start
,stop
, etstep
qui valent simplement les trois arguments (ou leurs valeur par défaut). Ils n’ont pas d’autres fonctionnalité explicite, cependant ils sont utilisés par Numerical Python et d’autres bibliothèques tierces. Les objets slice sont aussi générés par la notation par indices étendue. Par exemplea[start:stop:step]
oua[start:stop, i]
. Voiritertools.islice()
pour une version alternative donnant un itérateur.
-
sorted
(iterable[, key][, reverse])¶ Donne une nouvelle liste triée depuis les éléments d”iterable.
A deux arguments optionnels qui doivent être fournis par mot clef.
key spécifie une fonction d’un argument utilisé pour extraire une clef de comparaison de chaque élément de la liste :
key=str.lower
. La valeur par défaut estNone
(compare les éléments directement).reverse, une valeur booléenne. Si elle est
True
, la liste d’éléments est triée comme si toutes les comparaisons étaient inversées.Utilisez
functools.cmp_to_key()
pour convertir l’ancienne notation cmp en une fonction key.La fonction native
sorted()
est garantie stable. Un tri est stable s’il garantie de ne pas changer l’ordre relatif des éléments égaux entre eux. C’est utile pour trier en plusieurs passes, par exemple par département puis par salaire).Pour des exemples de tris et un bref tutoriel, consultez Guide pour le tri.
-
staticmethod
(function)¶ Donne une méthode statique pour function.
Une méthode statique ne reçoit pas de premier argument implicitement. Voilà comment déclarer une méthode statique :
class C: @staticmethod def f(arg1, arg2, ...): ...
La forme
@staticmethod
est un decorator de fonction. Voir la description des définitions de fonction dans Définition de fonctions pour plus de détails.Elle peut être appelée soit sur une classe (tel que
C.f()
) ou sur une instance (tel queC().f()
). L’instance est ignorée, sauf pour sa classe.Les méthodes statiques en Python sont similaires à celles trouvées en Java ou en C++. Consultez
classmethod()
pour une variante utile pour créer des constructeurs alternatifs.Pour plus d’informations sur les méthodes statiques, consultez la documentation de la hiérarchie des types standards dans Hiérarchie des types standards.
-
class
str
(object='') -
class
str
(object=b'', encoding='utf-8', errors='strict') Donne une version sous forme de
str
d”object. Voirstr()
pour plus de détails.str
est la class native des chaînes de caractères. Pour des informations générales à propos des chaînes, consultez Type Séquence de Texte — str.
-
sum
(iterable[, start])¶ Additionne start et les éléments d”iterable de gauche à droite et en donne le total. start vaut
0
par défaut. Les éléments d”iterable sont normalement des nombres, et la valeur de start ne peut pas être une chaîne.Pour certains cas, il existe de bonnes alternatives à
sum()
. La bonne méthode, et rapide, de concaténer une séquence de chaînes est d’appeler''.join(séquence)
. Pour additionner des nombres à virgule flottante avec une meilleure précision, voirmath.fsum()
. Pour concaténer une série d’itérables, utilisez plutôtitertools.chain()
.
-
super
([type[, object-or-type]])¶ Donne un objet mandataire (proxy object en anglais) déléguant les appels de méthode à une classe parente ou sœur de type type. C’est utile pour accéder à des méthodes héritées et substituées dans la classe. L’ordre de recherche est le même que celui utilisé par
getattr()
sauf que type lui même est sauté.L’attribut
__mro__
de type liste l’ordre de recherche de la méthode de résolution utilisée pargetattr()
etsuper()
. L’attribut est dynamique et peut changer lorsque la hiérarchie d’héritage est modifiée.Si le second argument est omis, l’objet super obtenu n’est pas lié. Si le second argument est un objet,
isinstance(obj, type)
doit être vrai. Si le second argument est un type,issubclass(type2, type)
doit être vrai (c’est utile pour les méthodes de classe).Il existe deux autres cas d’usage typiques pour super. Dans une hiérarchie de classes à héritage simple, super peut être utilisé pour obtenir la classe parente sans avoir à la nommer explicitement, rendant le code plus maintenable. Cet usage se rapproche de l’usage de super dans d’autres langages de programmation.
Le second est la gestion d’héritage multiple coopératif dans un environnement d’exécution dynamique. Cet usage est unique à Python, il ne se retrouve ni dans les langages compilés statiquement, ni dans les langages ne gérant que l’héritage simple. Cela rend possible d’implémenter un héritage en diamant dans lequel plusieurs classes parentes implémentent la même méthode. Une bonne conception implique que chaque méthode doit avoir la même signature lors de leur appels dans tous les cas (parce que l’ordre des appels est déterminée à l’exécution, parce que l’ordre s’adapte aux changements dans la hiérarchie, et parce que l’ordre peut inclure des classes sœurs inconnues avant l’exécution).
Dans tous les cas, un appel typique à une classe parente ressemble à :
class C(B): def method(self, arg): super().method(arg) # This does the same thing as: # super(C, self).method(arg)
Notez que
super()
fait partie de l’implémentation du processus de liaison de recherche d’attributs pointés explicitement tel quesuper().__getitem__(name)
. Il le fait en implémentant sa propre méthode__getattribute__()
pour rechercher les classes dans un ordre prévisible supportant l’héritage multiple coopératif. En conséquence,super()
n’est pas défini pour les recherches implicites via des instructions ou des opérateurs tel quesuper()[name]
.Notez aussi que, en dehors de sa forme sans arguments, la
super()
peut être utilisée en dehors des méthodes. La forme à deux arguments est précise et donne tous les arguments exactement, donnant les références appropriées. La forme sans arguments fonctionne seulement à l’intérieur d’une définition de classe, puisque c’est le compilateur qui donne les détails nécessaires à propos de la classe en cours de définition, ainsi qu’accéder à l’instance courante pour les méthodes ordinaires.Pour des suggestions pratiques sur la conception de classes coopératives utilisant
super()
, consultez guide to using super().
-
tuple
([iterable]) Plutôt qu’être une fonction,
tuple
est en fait un type de séquence immuable, tel que documenté dans Tuples et Types séquentiels — list, tuple, range.
-
class
type
(object)¶ -
class
type
(name, bases, dict) Avec un argument, donne le type d”object. La valeur donnée est un objet type et généralement la même que la valeur de l’attribut
object.__class__
.La fonction native
isinstance()
est recommandée pour tester le type d’un objet car elle prend en compte l’héritage.Avec trois arguments, renvoie un nouveau type. C’est essentiellement une forme dynamique de l’instruction
class
. La chaîne name est le nom de la classe et deviendra l’attribut__name__
; le tuple bases contient les classes mères et deviendra l’attribut__bases__
; et le dictionnaire dict est l’espace de noms contenant les définitions du corps de la classe, il est copié vers un dictionnaire standard pour devenir l’attribut__dict__
. Par exemple, les deux instructions suivantes créent deux instances identiques detype
.>>> class X: ... a = 1 ... >>> X = type('X', (object,), dict(a=1))
Voir aussi Objets type.
-
vars
([object])¶ Renvoie l’attribut
__dict__
d’un module, d’une classe, d’une instance ou de n’importe quel objet avec un attribut__dict__
.Les objets tels que les modules et les instances on un attribut
__dict__
modifiable ; Cependant, d’autres objets peuvent avoir des restrictions en écriture sur leurs attributs__dict__
(par exemple, les classes utilisent untypes.MappingProxyType
pour éviter les modifications directes du dictionnaire).Sans augment,
vars()
se comporte commelocals()
. Notez que le dictionnaire des variables locales n’est utile qu’en lecture, car ses écritures sont ignorées.
-
zip
(*iterables)¶ Construit un itérateur agrégeant les éléments de tous les itérables.
Donne un itérateur de tuples, où le i-ième tuple contiens le i-ième élément de chacune des séquences ou itérables fournis. L’itérateur s’arrête lorsque le plus petit itérable fourni est épuisé. Avec un seul argument itérable, elle donne un itérateur sur des tuples d’un élément. Sans arguments, elle donne un itérateur vide. Équivalent à :
def zip(*iterables): # zip('ABCD', 'xy') --> Ax By sentinel = object() iterators = [iter(it) for it in iterables] while iterators: result = [] for it in iterators: elem = next(it, sentinel) if elem is sentinel: return result.append(elem) yield tuple(result)
Il est garanti que les itérables soient évalués de gauche a droite. Cela rend possible de grouper une séquence de données en groupes de taille n via
zip(*[iter(s)]*n)
. Cela duplique le même itérateurn
fois tel que le tuple obtenu contient le résultat den
appels à l’itérateur. Cela a pour effet de diviser la séquence en morceaux de taille n.zip()
ne devrait être utilisée avec des itérables de longueur différente que lorsque les dernières données des itérables les plus longs peuvent être ignorées. Si c’est valeurs sont importantes, utilisez plutôtitertools.zip_longest()
.zip()
peut être utilisée conjointement avec l’opérateur*
pour dézipper une liste :>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> zipped = zip(x, y) >>> list(zipped) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
-
__import__
(name, globals=None, locals=None, fromlist=(), level=0)¶ Note
C’est une fonction avancée qui n’est pas fréquemment nécessaire, contrairement à
importlib.import_module()
.Cette fonction est invoquée via l’instruction
import
. Elle peut être remplacée (en important le modulebuiltins
et en y remplaçantbuiltins.__import__
) afin de changer la sémantique de l’instructionimport
, mais c’est extrêmement déconseillé car il est plus simple d’utiliser des import hooks (voir la PEP 302) pour le même résultat sans gêner du code s’attendant à trouver l’implémentation par défaut. L’usage direct de__import__()
est aussi déconseillé en faveur deimportlib.import_module()
.La fonction importe le module name, utilisant potentiellement globals et locals pour déterminer comment interpréter le nom dans le contexte d’un paquet. fromlist donne le nom des objets ou sous-modules qui devraient être importés du module name. L’implémentation standard n’utilise pas l’argument locals et n’utilise globals que pour déterminer le contexte du paquet de l’instruction
import
.level permet de choisir entre import absolu ou relatif.
0
(par défaut) implique de n’effectuer que des imports absolus. Une valeur positive indique le nombre de dossiers parents relativement au dossier du module appelant__import__()
(voir la PEP 328).Lorsque la variable name est de la forme
package.module
, normalement, le paquet le plus haut (le nom jusqu’au premier point) est donné, et pas le module nommé par name. Cependant, lorsqu’un argument fromlist est fourni, le module nommé par name est donné.Par exemple, l’instruction
import spam
donne un code intermédiaire (bytecode en anglais) ressemblant au code suivant :spam = __import__('spam', globals(), locals(), [], 0)
L’instruction
import ham.ham
appelle :spam = __import__('spam.ham', globals(), locals(), [], 0)
Notez comment
__import__()
donne le module le plus haut ici parce que c’est l’objet lié à un nom par l’instructionimport
.En revanche, l’instruction
from spam.ham import eggs, saucage as saus
donne :_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausage
Ici le module
spam.ham
est donné par__import__()
. De cet objet, les noms à importer sont récupérés et assignés à leurs noms respectifs.Si vous voulez simplement importer un module (potentiellement dans un paquet) par son nom, utilisez
importlib.import_module()
.Modifié dans la version 3.3: Des valeurs négatives pour level ne sont plus gérées (ce qui change la valeur par défaut pour 0).
Notes
[1] | Notez que l’analyseur n’accepte que des fin de lignes de style Unix. Si vous lisez le code depuis un fichier, assurez-vous d’utiliser la conversion de retours à la ligne pour convertir les fin de lignes Windows et Mac. |