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.

Fonctions natives

abs(x)

Return the absolute value of a number. The argument may be an integer, a floating point number, or an object implementing __abs__(). If the argument is a complex number, its magnitude is returned.

aiter(async_iterable)

Renvoie un itérateur asynchrone pour l'itérable asynchrone donné. Équivaut à appeler x.__aiter__().

Remarque : contrairement à iter(), aiter() n'a pas de variante à 2 arguments.

Nouveau dans la version 3.10.

all(iterable)

Renvoie 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
awaitable anext(async_iterator)
awaitable anext(async_iterator, default)

Lorsqu'il est attendu, renvoie l'élément suivant à partir de l'itérateur asynchrone donné, ou default s'il est fourni et que l'itérateur est épuisé.

Il s'agit de la variante asynchrone de la fonction native next() et elle se comporte de la même manière.

Renvoie un attendable en appelant la méthode __anext__() de async_iterator. L'attente renvoie la prochaine valeur de l'itérateur. Si default est fourni, il est renvoyé si l'itérateur est épuisé, sinon StopAsyncIteration est levée.

Nouveau dans la version 3.10.

any(iterable)

Renvoie True si au moins un élément de iterable est vrai. False est renvoyé dans le cas où iterable est vide. Équivaut à :

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
ascii(object)

Renvoie, tout comme repr(), une chaîne contenant une représentation d'un objet destinée à l'affichage, mais en transformant les caractères non ASCII renvoyés par repr() par l'utilisation de séquences d'échappement \x, \u ou \U. Cela génère une chaîne similaire à ce que renvoie repr() dans Python 2.

bin(x)

Convertit un nombre entier en binaire dans une chaîne avec le préfixe "0b". 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. Voici quelques exemples :

>>> bin(3)
'0b11'
>>> bin(-10)
'-0b1010'

Vous pouvez contrôler l'affichage du préfixe "0b" à l'aide d'un des moyens suivants.

>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')

Voir aussi format() pour plus d'informations.

class bool(x=False)

Return a Boolean value, i.e. one of True or False. x is converted using the standard truth testing procedure. If x is false or omitted, this returns False; otherwise, it returns True. The bool class is a subclass of int (see Types numériques — int, float, complex). It cannot be subclassed further. Its only instances are False and True (see Boolean Type - bool).

Modifié dans la version 3.7: x est désormais un argument exclusivement positionnel.

breakpoint(*args, **kws)

Cette fonction vous place dans le débogueur lorsqu'elle est appelée. Plus précisément, elle appelle sys.breakpointhook(), en lui passant les arguments args et kws. Par défaut, sys.breakpointhook() appelle pdb.set_trace() qui n'attend aucun argument. Dans ce cas, c'est purement une fonction de commodité donc vous n'avez pas à importer explicitement pdb ou à taper plus de code pour entrer dans le débogueur. Cependant, il est possible d'affecter une autre fonction à sys.breakpointhook(), que breakpoint() appellera automatiquement, vous permettant ainsi de basculer dans le débogueur de votre choix. Si sys.breakpointhook() n'est pas accessible, cette fonction lève RuntimeError.

Par défaut, le comportement de la fonction breakpoint() peut être changé par la variable d'environnement PYTHONBREAKPOINT. Voir sys.breakpointhook() pour plus de détails.

Notez que ceci n'est plus garanti si la fonction sys.breakpointhook() a été remplacée.

Lève un évènement d'audit builtins.breakpoint avec l'argument breakpointhook.

Nouveau dans la version 3.7.

class bytearray(source=b'')
class bytearray(source, encoding)
class bytearray(source, encoding, errors)

Renvoie un nouveau tableau d'octets. La classe bytearray est une séquence mutable de nombres 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 mutables, ainsi que la plupart des méthodes de la classe bytes, voir Opérations sur les bytes et bytearray.

Le paramètre optionnel source peut être utilisé pour initialiser le tableau de plusieurs façons :

  • si c'est une chaîne, vous devez aussi donner le paramètre encoding pour l'encodage (et éventuellement errors). La fonction bytearray() convertit ensuite la chaîne en octets via la méthode str.encode() ;

  • si c'est un entier, le tableau a cette taille et est initialisé d'octets null ;

  • si c'est un objet conforme à l'interface tampon, un tampon en lecture seule de l'objet est utilisé pour initialiser le tableau ;

  • si c'est un itérable, il doit itérer sur des nombres entier dans l'intervalle 0 <= x < 256, qui sont utilisés pour initialiser le contenu du tableau.

Sans argument, un tableau vide est créé.

Voir Séquences Binaires — bytes, bytearray, vue mémoire et Objets bytearray.

class bytes(source=b'')
class bytes(source, encoding)
class bytes(source, encoding, errors)

Renvoie un nouvel objet bytes, qui est une séquence immuable de nombres entiers dans l'intervalle 0 <= x < 256. Un bytes est une version immuable de bytearray — avec les mêmes méthodes d'accès, et le même comportement lors de l'indexation ou du découpage.

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, vue mémoire, Objets bytes, et Opérations sur les bytes et bytearray.

callable(object)

Return True if the object argument appears callable, False if not. If this returns True, it is still possible that a call fails, but if it is False, calling object will never succeed. Note that classes are callable (calling a class returns a new instance); instances are callable if their class has a __call__() method.

Nouveau dans la version 3.2: cette fonction a d'abord été supprimée avec Python 3.0 puis elle a é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 que chr(8364) renvoie '€'. Il s'agit de la réciproque de ord().

L'intervalle valide pour cet argument est de 0 à 1114111 (0x10FFFF en base 16). Une exception ValueError est levée si i est en dehors de l'intervalle.

@classmethod

Transforme une méthode en méthode de classe.

Une méthode de classe reçoit implicitement la classe en premier argument, 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 décorateur de fonction — consultez 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 (comme C().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 ce sont elles dont vous avez besoin, regardez du côté de staticmethod() dans cette section. Voir aussi Hiérarchie des types standards.

Modifié dans la version 3.9: les méthodes de classe peuvent encapsuler d'autres descripteurs comme property().

Modifié dans la version 3.10: les méthodes de classe héritent dorénavant des attributs des méthodes (__module__, __name__, __qualname__, __doc__ et __annotations__) et ont un nouvel attribut __wrapped__.

Modifié dans la version 3.11: les méthodes de classe ne peuvent plus encapsuler d'autres descripteurs comme property().

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() ou eval(). source peut être une chaîne, une chaîne d'octets, ou un objet AST. Consultez la documentation du module ast pour des informations sur la manipulation d'objets AST.

L'argument filename doit désigner le fichier depuis lequel le code a é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' s'il ne contient qu'une instruction interactive (dans ce dernier cas, les résultats d'expressions donnant autre chose que None sont affichés).

Les arguments optionnels flags et dont_inherit contrôlent quelles options de compilation seront activées et quelles instructions future seront autorisées. Si aucun des deux n'est présent (ou que les deux sont à 0), le code est compilé avec les mêmes paramètres que le code appelant compile(). Si l'argument flags est fourni alors que dont_inherit ne l'est pas (ou vaut 0), les options de compilation et les instructions futures utilisées sont celles définies 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é tel quel — les flags (instructions futures et options de compilation) valables pour le code encadrant compile sont ignorés.

Les instructions future sont contrôlées par des bits, il est ainsi possible d'en activer plusieurs en les combinant avec un OU binaire. Les bits requis pour demander une certaine fonctionnalité se trouvent dans l'attribut compiler_flag de la classe Feature du module __future__. Les options du compilateur se trouvent dans le module ast, avec le préfixe PyCF_.

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 niveaux explicites sont : 0 (pas d'optimisation, __debug__ est True), 1 (les assert sont supprimés, __debug__ est False) ou 2 (les chaines de documentation sont également supprimées).

Cette fonction lève une SyntaxError si la source n'est pas valide, et ValueError si la source contient des octets null.

Si vous voulez transformer du code Python en sa représentation AST, voyez ast.parse().

Lève un évènement d'audit compile avec les arguments source et filename.

Note

lors de la compilation d'une chaîne de plusieurs lignes de code avec les modes 'single' ou 'eval', celles-ci doivent être terminées par au moins un retour à la ligne. Cela permet de faciliter la distinction entre les instructions complètes et incomplètes dans le module code.

Avertissement

il est possible de faire planter l'interpréteur Python avec des chaînes suffisamment grandes ou complexes lors de la compilation d'un objet AST. Ceci est dû à limitation de la profondeur de la pile d'appels.

Modifié dans la version 3.2: autorise l'utilisation de retours à la ligne Mac et Windows. Par ailleurs, 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.

Nouveau dans la version 3.8: ast.PyCF_ALLOW_TOP_LEVEL_AWAIT peut maintenant être passée à flags pour permettre une gestion haut niveau de await, async for et async with.

class complex(real=0, imag=0)
class complex(string)

Renvoie 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 sans 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 font int ou float. Si aucun argument n'est fourni, renvoie 0j.

Pour un objet Python général x, complex(x) délègue à x.__complex__(). Si __complex__() n'est pas défini, alors il délègue à __float__(). Si __float__() n'est pas défini, alors il délègue à __index__().

Note

lors de la conversion depuis une chaîne, elle ne doit pas contenir d'espaces autour des opérateurs binaires + ou -. Par exemple complex('1+2j') est correct, mais complex('1 + 2j') lève une ValueError.

Le type complexe est décrit dans Types numériques — int, float, complex.

Modifié dans la version 3.6: les chiffres peuvent être groupés avec des tirets bas comme dans les expressions littérales.

Modifié dans la version 3.8: délègue à __index__() si __complex__() et __float__() ne sont pas définies.

delattr(object, name)

C'est une cousine 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 exemple delattr(x, 'foobar') est l'équivalent de del x.foobar. name n'a pas besoin d'être un identifiant Python (voir setattr()).

class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)

Crée un nouveau dictionnaire. L'objet dict est la classe du dictionnaire. Voir dict et Les types de correspondances — dict pour vous documenter sur cette classe.

Pour les autres conteneurs, voir les classes natives list, set, et tuple, ainsi que le module collections.

dir()
dir(object)

Sans argument, elle donne la liste des noms dans l'espace de nommage local. Avec un argument, elle essaye de donner une liste d'attributs valides pour cet objet.

If the object has a method named __dir__(), this method will be called and must return the list of attributes. This allows objects that implement a custom __getattr__() or __getattribute__() function to customize the way dir() reports their attributes.

If the object does not provide __dir__(), the function tries its best to gather information from the object's __dict__ attribute, if defined, and from its type object. The resulting list is not necessarily complete and may be inaccurate when the object has a custom __getattr__().

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 
['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 ensemble de noms pertinents plutôt qu'un ensemble exhaustif 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és lorsque l'argument est une classe.

divmod(a, b)

Prend deux nombres (qui ne sont pas des nombres complexes) et renvoie 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éralement math.floor(a / b) mais peut valoir 1 de moins. Dans tous les cas q * b + a % b est très proche de a. Si a % b est différent de zéro, il a le même signe que b et 0 <= abs(a % b) < abs(b).

enumerate(iterable, start=0)

Renvoie un objet énumérant. iterable doit être une séquence, un itérateur, ou tout autre objet prenant en charge l'itération. La méthode __next__() de l'itérateur donné par enumerate() renvoie un n-uplet 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(iterable, start=0):
    n = start
    for elem in iterable:
        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 nommage global et local. Si le dictionnaire globals est présent mais ne contient pas de valeur pour la clé __builtins__, une référence au dictionnaire du module builtins y est insérée avant qu'expression ne soit évaluée. Ainsi, vous pouvez contrôler quels objets natifs sont disponibles pour le code à exécuter en insérant votre propre dictionnaire __builtins__ dans globals avant de le passer à eval(). Si le dictionnaire locals est omis, sa valeur par défaut est le dictionnaire globals. Si les deux dictionnaires sont omis, l'expression est exécutée avec les dictionnaires globals et locals dans l'environnement où eval() est appelée. Notez que eval() n'a pas accès aux portées imbriquées (non locales) dans l'environnement englobant.

La valeur de retour est le résultat de l'expression évaluée. Les erreurs de syntaxe sont signalées comme des exceptions. Exemple :

>>> x = 1
>>> eval('x+1')
2

Cette fonction peut aussi être utilisée pour exécuter n'importe quel objet code (tels que ceux créés par compile()). Dans ce cas, donnez un objet code plutôt qu'une chaîne. Si l'objet code a été compilé avec l'argument mode à 'exec', eval() renvoie None.

Conseils : l'exécution dynamique d'instructions est gérée par la fonction exec(). Les fonctions globals() et locals() renvoient respectivement les dictionnaires globaux et locaux, qui peuvent être utiles lors de l'usage de eval() et exec().

Si la source donnée est une chaîne, les espaces de début et de fin et les tabulations sont supprimées.

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.

Lève un évènement d'audit exec avec l'argument code_object.

exec(object, globals=None, locals=None, /, *, closure=None)

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 Fichier d'entrée dans le manuel de référence du langage). Gardez en tête que les mots clés nonlocal, yield et return ne peuvent pas être utilisés en dehors d'une fonction, même dans du code passé à exec(). La fonction renvoie None.

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 (et pas une sous-classe de dictionnaire) utilisé pour les variables globales et locales. Si les deux sont fournis, ils sont utilisés respectivement pour les variables globales et locales. locales peut être n'importe quel objet de correspondance. Souvenez-vous qu'au niveau d'un module, les dictionnaires des locales et des globales ne sont qu'un. Si exec reçoit deux objets distincts dans globals et locals, le code est exécuté comme s'il était inclus dans une définition de classe.

Si le dictionnaire globals ne contient pas de valeur pour la clé __builtins__, une référence au dictionnaire du module builtins 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().

L'argument closure spécifie une fermeture – un n-uplet de variables d'objets cellules (NdT : voir l'API C). Il n'est valide que lorsque object est un objet code contenant des variables libres. La taille du n-uplet doit correspondre exactement au nombre de variables libres référencées par l'objet code.

Lève un évènement d'audit exec avec l'argument code_object.

Note

les fonctions natives globals() et locals() renvoient respectivement les dictionnaires globaux et locaux, qui peuvent être utiles en deuxième et troisième argument de exec().

Note

la valeur par défaut pour locals se comporte comme la fonction locals() : il est déconseillé de modifier le dictionnaire locals par défaut. Donnez un dictionnaire explicitement à locals si vous désirez observer l'effet du code sur les variables locales, après que exec() soit terminée.

Modifié dans la version 3.11: ajout du paramètre closure.

filter(function, iterable)

Construit un itérateur depuis les éléments d'iterable pour lesquels function renvoie True. iterable peut aussi bien être une séquence, un conteneur qui prend en charge 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(function, iterable) est l'équivalent du générateur (item for item in iterable if function(item)) si function n'est pas None, et de (item for item in iterable if item) si function est None.

Voir itertools.filterfalse() pour la fonction complémentaire qui donne les éléments d'iterable pour lesquels function renvoie False.

class float(x=0.0)

Renvoie un nombre a virgule flottante depuis un nombre ou une chaîne x.

Si l'argument est une chaîne, elle doit 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 ou pas un nombre en français), l'infini positif, ou l'infini négatif. Plus précisément, l'argument doit se conformer à floatvalue tel que défini la grammaire suivante, après que les espaces en début et fin de chaîne aient été retirées :

sign        ::=  "+" | "-"
infinity    ::=  "Infinity" | "inf"
nan         ::=  "nan"
digit       ::=  <a Unicode decimal digit, i.e. characters in Unicode general category Nd>
digitpart   ::=  digit (["_"] digit)*
number      ::=  [digitpart] "." digitpart | digitpart ["."]
exponent    ::=  ("e" | "E") ["+" | "-"] digitpart
floatnumber ::=  number [exponent]
floatvalue  ::=  [sign] (floatnumber | infinity | nan)

Case is not significant, so, for example, "inf", "Inf", "INFINITY", and "iNfINity" are all acceptable spellings for positive infinity.

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 général x, float(x) est délégué à x.__float__(). Si __float__() n'est pas défini alors il est délégué à __index__().

Sans argument, 0.0 est renvoyé.

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.

Modifié dans la version 3.6: les chiffres peuvent être groupés avec des tirets bas comme dans les expressions littérales.

Modifié dans la version 3.7: x est désormais un argument exclusivement positionnel.

Modifié dans la version 3.8: délègue à __index__() si __float__() n'est pas définie.

format(value, format_spec='')

Convertit une valeur en sa représentation « formatée », contrôlée 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. Dans ce cas, appeler cette fonction a généralement le même effet qu'appeler str(value).

A call to format(value, format_spec) is translated to type(value).__format__(value, format_spec) which bypasses the instance dictionary when searching for the value's __format__() method. A TypeError exception is raised if the method search reaches object and the format_spec is non-empty, or if either the format_spec or the return value are not strings.

Modifié dans la version 3.4: object().__format__(format_spec) lève TypeError si format_spec n'est pas une chaîne vide.

class frozenset(iterable=set())

Renvoie un nouveau frozenset, dont les objets sont éventuellement tirés d'iterable. frozenset est une classe native. Voir frozenset et Types d'ensembles — set, frozenset pour la documentation sur cette classe.

Pour d'autres conteneurs, voyez les classes natives set, list, tuple, et dict, ainsi que le module collections.

getattr(object, name)
getattr(object, name, default)

Renvoie 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, mais que default est fourni, celui-ci est renvoyé. Sinon l'exception AttributeError est levée. name n'a pas besoin d'être un identifiant Python (voir setattr()).

Note

étant donné que la transformation des noms privés se produit au moment de la compilation, il faut modifier manuellement le nom d'un attribut privé (attributs avec deux traits de soulignement en tête) afin de le récupérer avec getattr().

globals()

Renvoie le dictionnaire implémentant l'espace de nommage du module actuel. Pour le code dans les fonctions, il est défini lorsque la fonction est définie et reste le même quel que soit le moment où la fonction est appelée.

hasattr(object, name)

Les arguments sont : un objet et une chaîne de caractères. Le résultat est True si la chaîne est le nom d'un des attributs de l'objet, sinon False (l'implémentation appelle getattr(object, name) et regarde si une exception AttributeError a été levée).

hash(object)

Renvoie la valeur de hachage d'un objet (s'il en a une). Les valeurs de hachage sont des entiers. Elles sont utilisées pour comparer rapidement des clés de dictionnaire lors de leur recherche. Les valeurs numériques égales ont la même valeur de hachage (même si leurs types sont différents, comme pour 1 et 1.0).

Note

For objects with custom __hash__() methods, note that hash() truncates the return value based on the bit width of the host machine.

help()
help(request)

Invoque le système d'aide natif (cette fonction est destinée à l'usage en mode interactif). Si aucun argument n'est fourni, le système d'aide démarre dans l'interpréteur. Si l'argument est une chaîne, celle-ci est recherchée comme le nom d'un module, d'une fonction, d'une classe, d'une méthode, d'un mot clé, ou d'un sujet de documentation, 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.

Notez que si une barre oblique (/) apparaît dans la liste des paramètres d'une fonction lorsque vous appelez help(), cela signifie que les paramètres placés avant la barre oblique sont strictement positionnels. Pour plus d'informations, voir La FAQ sur les arguments positionnels.

Cette fonction est ajoutée à l'espace de nommage natif par le module site.

Modifié dans la version 3.4: les changements aux modules pydoc et inspect rendent les signatures des appelables plus compréhensibles et cohérentes.

hex(x)

Convertit un entier en chaîne hexadécimale préfixée de "0x". Si x n'est pas un int, il doit définir une méthode __index__() qui renvoie un entier. Quelques exemples :

>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'

Si vous voulez convertir un nombre entier en chaîne hexadécimale, en majuscule ou non, préfixée ou non, vous pouvez utiliser l'une des méthodes suivantes :

>>> '%#x' % 255, '%x' % 255, '%X' % 255
('0xff', 'ff', 'FF')
>>> format(255, '#x'), format(255, 'x'), format(255, 'X')
('0xff', 'ff', 'FF')
>>> f'{255:#x}', f'{255:x}', f'{255:X}'
('0xff', 'ff', 'FF')

Voir aussi format() pour plus d'informations.

Voir aussi int() pour convertir une chaîne hexadécimale en un entier (en affectant 16 à l'argument 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)

Renvoie 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 dont les durées de vie ne se chevauchent pas peuvent partager le même id().

Particularité de l'implémentation CPython : c'est l'adresse de l'objet en mémoire.

Lève un évènement d'audit builtins.id avec l'argument id.

input()
input(prompt)

Si l'argument prompt est donné, il est écrit sur la sortie standard sans le retour à la ligne final. La fonction lit ensuite une ligne sur l'entrée standard et la convertit en chaîne (supprimant le retour à la ligne final) qu'elle renvoie. 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.

Lève un évènement d'audit builtins.input avec l'argument prompt.

Lève un évènement d'audit builtins.input/result avec l'argument result.

class int(x=0)
class int(x, base=10)

Renvoie un entier construit depuis un nombre ou une chaîne x, ou 0 si aucun argument n'est fourni. Si x définit une méthode __int__(), int(x) renvoie x.__int__(). Si x définit __index__(), int(x) renvoie x.__index__() Si x définit __trunc__(), int(x) renvoie x.__trunc__(). Les nombres à virgule flottante sont tronqués vers zéro.

Si x n'est pas un nombre ou si base est fournie, alors x doit être une chaîne, une instance bytes ou une instance bytearray représentant un entier dans la base base. Facultativement, la chaîne peut être précédée de + ou - (sans espace qui suit), avoir des zéros non significatifs, être entourée de caractères d'espacement et avoir des tirets bas (un seul à la fois) intercalés entre les chiffres.

Une chaine représentant un entier en base n contient des chiffres, chacun représentant une valeur de 0 à n-1. Les valeurs 0 à 9 peuvent être représentées par n'importe lequel des chiffres décimaux Unicode. Les valeurs de 10 à 35 peuvent être représentées par a jusqu'à z (ou A à Z). La base par défaut est 10. Les valeurs autorisées pour base sont 0 et 2 à 36. Les littéraux en base 2, 8, et 16 peuvent être préfixés avec 0b/0B, 0o/0O, ou 0x/0X tout comme les littéraux dans le code. Fournir 0 comme base demande d'interpréter exactement comme un entier littéral dans du code Python, donc la base sera 2, 8, 10, ou 16 en fonction du préfixe. Indiquer 0 comme base interdit les zéros en tête, ainsi int('010', 0) n'est pas légal, alors que int('010') l'est tout comme int('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éthode base.__index__, cette méthode est appelée pour obtenir un entier pour cette base. Les versions précédentes utilisaient base.__int__ au lieu de base.__index__.

Modifié dans la version 3.6: les chiffres peuvent être groupés avec des tirets bas comme dans les expressions littérales.

Modifié dans la version 3.7: x est désormais un argument exclusivement positionnel.

Modifié dans la version 3.8: Revient à __index__() si __int__() n'est pas définie.

Modifié dans la version 3.11: le repli vers __trunc__() est obsolète.

Modifié dans la version 3.11: les chaînes données à int et les représentations de chaîne peuvent être limitées pour aider à éviter les attaques par déni de service. Une ValueError est levée lorsque la limite est dépassée lors de la conversion d'une chaîne x en un int ou lorsque la conversion d'un int en une chaîne dépasserait la limite. Voir la documentation relative à la limites de longueur lors de la conversion de chaînes en entiers.

isinstance(object, classinfo)

Renvoie True si object est une instance de classinfo, ou d'une de ses classes filles, directe, indirecte, ou abstraite. Si object n'est pas un objet du type donné, la fonction renvoie toujours False. Si classinfo est un n-uplet de types (ou récursivement, d'autres n-uplets) ou une union de types différents, renvoie True si object est une instance de n'importe quel de ces types. Si classinfo n'est ni un type ni un n-uplet de types (et récursivement), une exception TypeError est levée. TypeError ne peut pas être levée pour un type invalide si une des vérifications précédentes réussit.

Modifié dans la version 3.10: classinfo peut être une union de types.

issubclass(class, classinfo)

Renvoie True si class est une classe fille (directe, indirecte ou abstraite) de classinfo. Une classe est considérée sous-classe d'elle-même. classinfo peut être un n-uplet de classes (ou récursivement, d'autres n-uplets) ou une union de types, dans ce cas elle renvoie True si class est une sous-classe d'une partie de classinfo. Dans tous les autres cas, une TypeError est levée.

Modifié dans la version 3.10: classinfo peut être une union de types.

iter(object)
iter(object, sentinel)

Return an iterator object. The first argument is interpreted very differently depending on the presence of the second argument. Without a second argument, object must be a collection object which supports the iterable protocol (the __iter__() method), or it must support the sequence protocol (the __getitem__() method with integer arguments starting at 0). If it does not support either of those protocols, TypeError is raised. If the second argument, sentinel, is given, then object must be a callable object. The iterator created in this case will call object with no arguments for each call to its __next__() method; if the value returned is equal to sentinel, StopIteration will be raised, otherwise the value will be returned.

Voir aussi Les types itérateurs.

Une autre application utile de la deuxième forme de iter() est de construire un lecteur par blocs. Par exemple, lire des blocs de taille fixe d'une base de donnée binaire jusqu'à ce que la fin soit atteinte :

from functools import partial
with open('mydata.db', 'rb') as f:
    for block in iter(partial(f.read, 64), b''):
        process_block(block)
len(s)

Renvoie la longueur (nombre d'éléments) d'un objet. L'argument peut être une séquence (telle qu'une chaîne de caractères ou d'octets, un n-uplet, une liste ou un intervalle) ou une collection (telle qu'un dictionnaire, un ensemble ou un ensemble figé).

Particularité de l'implémentation CPython : len lève une OverflowError sur des longueurs supérieures à sys.maxsize, par exemple pour range(2 ** 100).

class list
class list(iterable)

Contrairement aux apparences, list n'est pas une fonction mais un type séquentiel mutable, comme décrit dans Listes et Types séquentiels — list, tuple, range.

locals()

Met à jour et renvoie un dictionnaire représentant la table des symboles locaux. Les variables libres sont renvoyées par la fonction locals() lorsque celle-ci est appelée dans le corps d'une fonction, mais pas dans le corps d'une classe. Notez qu’au niveau d’un module, locals() et globals() sont le même dictionnaire.

Note

Le contenu de ce dictionnaire ne doit pas être modifié ; les changements n'affectent pas les valeurs des variables locales ou libres utilisées par l'interpréteur.

map(function, iterable, *iterables)

Renvoie un itérateur appliquant function à chaque élément de iterable, et donnant ses résultats au fur et à mesure avec yield. Si d'autres iterables sont fournis, function doit prendre autant d'arguments, et est 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 sont déjà rangés sous forme de n-uplets, voir itertools.starmap().

max(iterable, *, key=None)
max(iterable, *, default, key=None)
max(arg1, arg2, *args, key=None)

Renvoie le plus grand élément d'un itérable, ou l'argument le plus grand parmi au moins deux arguments.

Si un seul argument positionnel est fourni, il doit être itérable. Le plus grand élément de l'itérable est renvoyé. Si au moins deux arguments positionnels sont fournis, l'argument le plus grand sera renvoyé.

Elle accepte deux arguments nommés optionnels. L'argument key spécifie une fonction à un argument permettant de trier comme pour list.sort(). L'argument default fournit quant à lui 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 renvoyé. C'est cohérent avec d'autres outils préservant une stabilité lors du tri, tels que sorted(iterable, key=keyfunc, reverse=True)[0] et heapq.nlargest(1, iterable, key=keyfunc).

Modifié dans la version 3.4: Added the default keyword-only parameter.

Modifié dans la version 3.8: l'argument key peut être None.

class memoryview(object)

Renvoie une « vue mémoire » (memory view) créée depuis l'argument. Voir Vues mémoire pour plus d'informations.

min(iterable, *, key=None)
min(iterable, *, default, key=None)
min(arg1, arg2, *args, key=None)

Renvoie 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 itérable. Le plus petit élément de l'itérable est renvoyé. Si au moins deux arguments positionnels sont fournis, le plus petit argument positionnel est renvoyé.

Elle accepte deux arguments nommés optionnels. L'argument key spécifie une fonction à un argument permettant de trier comme pour list.sort(). L'argument default fournit quant à lui 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 renvoie le premier rencontré. C'est cohérent avec d'autres outils préservant une stabilité lors du tri, tels que sorted(iterable, key=keyfunc)[0] et heapq.nsmallest(1, iterable, key=keyfunc).

Modifié dans la version 3.4: Added the default keyword-only parameter.

Modifié dans la version 3.8: l'argument key peut être None.

next(iterator)
next(iterator, default)

Donne l'élément suivant de l'itérateur en appelant sa méthode __next__(). Si default est fourni, il est renvoyé quand l'itérateur est épuisé, sinon une StopIteration est levée.

class object

Renvoie un objet vide. object est la classe parente de toutes les classes. Elle possède des méthodes communes à toutes les instances de classes en Python. Cette fonction n'accepte aucun argument.

Note

object n'a pas d'attribut __dict__, vous ne pouvez donc pas assigner d'attributs arbitraires à une instance d'object.

oct(x)

Convertit un entier en sa représentation octale dans une chaîne préfixée de "0o". Le résultat est une expression Python valide. Si x n'est pas un objet int, il doit définir une méthode __index__() qui donne un entier, par exemple :

>>> oct(8)
'0o10'
>>> oct(-56)
'-0o70'

Si vous voulez convertir un nombre entier en une chaîne octale, avec ou sans le préfixe 0o, vous pouvez utiliser l'une des méthodes suivantes.

>>> '%#o' % 10, '%o' % 10
('0o12', '12')
>>> format(10, '#o'), format(10, 'o')
('0o12', '12')
>>> f'{10:#o}', f'{10:o}'
('0o12', '12')

Voir aussi format() pour plus d'informations.

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

Ouvre file et donne un objet fichier correspondant. Si le fichier ne peut pas être ouvert, une OSError est levée. Voir Lecture et écriture de fichiers pour plus d'exemples d'utilisation de cette fonction.

file est un objet simili-chemin donnant le chemin (absolu ou relatif au répertoire courant) du fichier à ouvrir ou un nombre entier représentant le descripteur de fichier à envelopper (si un descripteur de fichier est donné, il sera fermé en même temps que l'objet d'entrée-sortie renvoyé, sauf si closefd est mis à False).

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 (en effaçant le contenu du fichier s'il existe), ainsi que 'x' permettant une création exclusive et 'a' pour ajouter à la fin du fichier (ce qui, sur certains systèmes Unix, signifie que toutes les écritures seront des ajouts en fin de fichier, sans tenir compte de la position demandée). En mode texte, si encoding n'est pas spécifié, l'encodage utilisé dépend de la plate-forme : locale.getencoding() est appelée pour obtenir l'encodage courant défini par les paramètres régionaux (pour lire et écrire des octets bruts, utilisez le mode binaire sans préciser encoding). Les modes disponibles sont :

Caractère

Signification

'r'

ouvre en lecture (par défaut)

'w'

ouvre en écriture, en effaçant le contenu du 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 en modification (lecture et écriture)

Le mode par défaut est 'r' (ouverture pour lire du texte, un synonyme pour 'rt'). Les modes 'w+' et 'w+b' ouvrent et vident le fichier. Les modes 'r+' et 'r+b' ouvrent le fichier sans le vider.

Comme mentionné dans Aperçu, Python fait la différence entre les entrées-sorties binaires et textes. Les fichiers ouverts en mode binaire (avec 'b' dans mode) donnent leur contenu sous forme de bytes sans décodage. En mode texte (par défaut, ou lorsque 't' est dans le mode), le contenu du fichier est donné sous forme de str, 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 la représentation du fichier texte du système sous-jacent. Tout le traitement est effectué par Python lui-même, et est ainsi indépendant de la plate-forme.

buffering is an optional integer used to set the buffering policy. Pass 0 to switch buffering off (only allowed in binary mode), 1 to select line buffering (only usable when writing in text mode), and an integer > 1 to indicate the size in bytes of a fixed-size chunk buffer. Note that specifying a buffer size this way applies for binary buffered I/O, but TextIOWrapper (i.e., files opened with mode='r+') would have another buffering. To disable buffering in TextIOWrapper, consider using the write_through flag for io.TextIOWrapper.reconfigure(). When no buffering argument is given, the default buffering policy works as follows:

  • les fichiers binaires sont mis 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 est de 4096 ou 8192 octets ;

  • les fichiers texte « interactifs » (fichiers pour lesquels io.IOBase.isatty() renvoie True) utilisent un tampon ligne par ligne. Les autres fichiers textes 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 renvoie locale.getencoding()), mais n'importe quel encodage de texte pris en charge par Python peut être utilisé. Voir codecs pour une liste des encodages pris en charge.

errors est une chaîne facultative spécifiant comment les erreurs d'encodage et de décodage sont gérées, ce n'est pas utilisable en mode binaire. De nombreux gestionnaires d'erreurs standards sont disponibles (listés sous Gestionnaires d'erreurs), aussi, tout nom de gestionnaire d'erreur enregistré avec codecs.register_error() est aussi un argument valide. Les noms standards sont :

  • 'strict' pour lever une ValueError 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 tous les octets incorrects comme des points de code de substitution de l'intervalle bas U+DC80 à U+DCFF. Ces points de code de substitution sont ensuite retransformés dans les mêmes octets lorsque le gestionnaire d'erreurs surrogateescape est utilisé pour l'écriture des données. C'est utile pour traiter des fichiers d'un encodage inconnu.

  • 'xmlcharrefreplace' is only supported when writing to a file. Characters not supported by the encoding are replaced with the appropriate XML character reference &#nnn;.

  • 'backslashreplace' remplace les données mal formées par des séquences d'échappement Python (utilisant des barres obliques inverses).

  • 'namereplace' (aussi supporté lors de l'écriture) remplace les caractères non gérés par des séquences d'échappement \N{...}.

newline contrôle comment interpréter les retours à la ligne. Il peut ê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 se terminer par '\n', '\r', ou '\r\n', et sont remplacées par '\n', avant d'être renvoyées à l'appelant. S'il vaut '', le mode universal newline est activé mais les fins de ligne ne sont pas remplacées. S'il a n'importe quelle autre valeur autorisée, les lignes sont seulement terminées par la chaîne donnée, qui est rendue telle quelle.

  • Lors de l'écriture, si newline est None, chaque '\n' est remplacé par le séparateur de lignes par défaut du système os.linesep. Si newline est '' ou '\n' aucun remplacement 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 rester True (la valeur par défaut) ; sinon, 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 renvoyer un descripteur de fichier ouvert (fournir os.open en tant qu'opener aura le même effet que donner None).

Il n'est pas possible d'hériter du descripteur de 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 d'objet fichier renvoyé par la fonction open() dépend du mode. Lorsque open() est utilisé pour ouvrir un fichier en mode texte (w, r, wt, rt, etc.), il renvoie une classe fille de io.TextIOBase (spécifiquement : io.TextIOWrapper). Lors de l'ouverture d'un fichier en mode binaire avec tampon, la classe renvoyée sera une fille de io.BufferedIOBase. La classe exacte varie : en lecture en mode binaire elle renvoie une io.BufferedReader, en écriture et ajout en mode binaire c'est une io.BufferedWriter, et en lecture-écriture, c'est une io.BufferedRandom. Lorsque le tampon est désactivé, le flux brut, une classe fille de io.RawIOBase, io.FileIO est renvoyée.

Consultez aussi les modules de gestion de fichiers tels que fileinput, io (où open() est déclarée), os, os.path, tempfile, et shutil.

Lève un évènement d'audit open avec les arguments file, mode et flags.

Les arguments mode et flags peuvent avoir été modifiés ou déduits de l'appel original.

Modifié dans la version 3.3:

  • ajout du paramètre opener.

  • ajout du mode 'x'.

  • IOError était normalement levée, elle est maintenant un alias de OSError.

  • FileExistsError est maintenant levée si le fichier ouvert en mode création exclusive ('x') existe déjà.

Modifié dans la version 3.4:

  • Il n'est plus possible d'hériter de file.

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 pour la justification).

  • ajout du gestionnaire d'erreurs 'namereplace'.

Modifié dans la version 3.6:

  • prise en charge des objets implémentant os.PathLike.

  • Sous Windows, ouvrir un buffer du terminal peut renvoyer une sous-classe de io.RawIOBase autre que io.FileIO.

Modifié dans la version 3.11: le mode 'U` a été enlevé.

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 entier 97 et ord('€') (symbole euro) renvoie 8364. Il s'agit de la réciproque de chr().

pow(base, exp, mod=None)

Renvoie base puissance exp et, si mod est présent, donne base puissance exp modulo mod (calculé de manière plus efficiente que pow(base, exp) % mod). La forme à deux arguments pow(base, exp) est équivalente à l'opérateur puissance : base**exp.

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 en float, et le résultat sera un float aussi. Par exemple, pow(10, 2) donne 100, alors que pow(10, -2) donne 0.01. Pour une base négative de type int ou float et un exposant non entier, le résultat est complexe. Par exemple, pow(-9, 0.5) renvoie une valeur proche de 3j.

Pour des opérandes base et exp de type int, si mod est présent, mod doit également être de type entier et mod doit être non nul. Si mod est présent et que exp est négatif, base et mod doivent être premiers entre eux. Dans ce cas, pow(inv_base, -exp, mod) est renvoyé, où inv_base est un inverse de base modulo mod.

Voici un exemple de calcul d'un inverse de 38 modulo 97 :

>>> pow(38, -1, mod=97)
23
>>> 23 * 38 % 97 == 1
True

Modifié dans la version 3.8: pour les opérandes int, la forme à trois arguments de pow permet maintenant au deuxième argument d'être négatif, permettant le calcul des inverses modulaires.

Modifié dans la version 3.8: autorise les arguments nommés. Auparavant, seuls les arguments positionnels étaient autorisés.

print(*objects, sep=' ', end='\n', file=None, flush=False)

Écrit objects dans le flux texte file, séparés par sep et suivis de end. Les arguments sep, end, file, et flush, s'ils sont présents, doivent être passés en arguments nommés.

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, ou None, indiquant de prendre les valeurs par défaut. Si aucun objects n'est donné print() écrit seulement end.

L'argument file doit être un objet avec une méthode write(string) ; s'il n'est pas fourni, ou vaut None, sys.stdout est utilisé. Puisque les arguments affichés sont convertis en chaîne, print() ne peut pas être utilisée avec des fichiers ouverts en mode binaire. Pour ceux-ci utilisez plutôt file.write(...).

Que la sortie utilise un tampon ou non est souvent décidé par file. Cependant, si l'argument flush est vrai, le tampon du flux est vidé explicitement.

Modifié dans la version 3.3: ajout de l'argument nommé flush.

class property(fget=None, fset=None, fdel=None, doc=None)

Renvoie 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 quant à elle permet de supprimer la valeur d'un attribut, et doc crée une chaîne de documentation (docstring) pour l'attribut.

Une utilisation courante est de 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 appelle l'accesseur (getter en anglais), c.x = value invoque le mutateur (setter), et del x le destructeur (deleter).

Si elle est fournie, doc est la chaîne de documentation de l'attribut. Autrement la propriété copie celle de fget (si elle existe). Cela rend possible la création de propriétés en lecture seule en utilisant simplement property() comme décorateur :

class Parrot:
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

The @property decorator turns the voltage() method into a "getter" for a read-only attribute with the same name, and it sets the docstring for voltage to "Get the current voltage."

@getter
@setter
@deleter

A property object has getter, setter, and deleter methods usable as decorators that create a copy of the property with the corresponding accessor function set to the decorated function. This is best explained with an example:

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é renvoyé possède aussi les attributs fget, fset et fdel correspondants aux arguments du constructeur.

Modifié dans la version 3.5: les chaînes de documentation des objets property sont maintenant en lecture-écriture.

class range(stop)
class range(start, stop, step=1)

Contrairement aux apparences, range n'est pas une fonction mais un type de séquence immuable, comme décrit dans Ranges et Types séquentiels — list, tuple, range.

repr(object)

Return a string containing a printable representation of an object. For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval(); otherwise, the representation is a string enclosed in angle brackets that contains the name of the type of the object together with additional information often including the name and address of the object. A class can control what this function returns for its instances by defining a __repr__() method. If sys.displayhook() is not accessible, this function will raise RuntimeError.

This class has a custom representation that can be evaluated:

class Person:
   def __init__(self, name, age):
      self.name = name
      self.age = age

   def __repr__(self):
      return f"Person('{self.name}', {self.age})"
reversed(seq)

Return a reverse iterator. seq must be an object which has a __reversed__() method or supports the sequence protocol (the __len__() method and the __getitem__() method with integer arguments starting at 0).

round(number, ndigits=None)

Renvoie number arrondi avec une précision de ndigits chiffres après la virgule. Si ndigits est omis (ou est None), l'entier le plus proche est renvoyé.

Pour les types natifs prenant en charge round(), les valeurs sont arrondies au multiple de 10 puissance moins ndigits, si deux multiples sont équidistants, l'arrondi se fait vers la valeur paire (par exemple round(0.5) et round(-0.5) valent tous les deux 0, et round(1.5) vaut 2). ndigits accepte tout nombre entier (positif, zéro, ou négatif). La valeur renvoyée est un entier si ndigits n'est pas donné (ou est None). Sinon elle est du même type que number.

Pour tout autre objet Python number, round délègue à number.__round__.

Note

le comportement de round() avec les nombres à virgule flottante peut être surprenant. Par exemple round(2.675, 2) donne 2.67 au lieu de 2.68. Ce n'est pas un bogue, 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
class set(iterable)

Renvoie un nouvel ensemble, dont les éléments sont extraits d'iterable s'il est fourni. set est une classe native. Voir set et Types d'ensembles — set, frozenset pour la documentation de cette classe.

D'autres conteneurs existent, comme : frozenset, list, tuple, et dict, ainsi que le module collections.

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 name peut désigner 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.

name n'a pas besoin d'être un identifiant Python tel que défini dans Identifiants et mots-clés sauf si l'objet choisit de l'imposer, par exemple en personnalisant __getattribute__() ou via __slots__. Un attribut dont le nom n'est pas un identifiant ne sera pas accessible en utilisant la notation pointée, mais est accessible via getattr() etc.

Note

étant donné que la transformation des noms privés se produit au moment de la compilation, il faut modifier manuellement le nom d'un attribut privé (attributs avec deux traits de soulignement en tête) afin de le définir avec setattr().

class slice(stop)
class slice(start, stop, step=None)

Return a slice object representing the set of indices specified by range(start, stop, step). The start and step arguments default to None.

start
stop
step

Slice objects have read-only data attributes start, stop, and step which merely return the argument values (or their default). They have no other explicit functionality; however, they are used by NumPy and other third-party packages.

Slice objects are also generated when extended indexing syntax is used. For example: a[start:stop:step] or a[start:stop, i]. See itertools.islice() for an alternate version that returns an iterator.

Modifié dans la version 3.12: Slice objects are now hashable (provided start, stop, and step are hashable).

sorted(iterable, /, *, key=None, reverse=False)

Renvoie une nouvelle liste triée depuis les éléments d'iterable.

Possède deux arguments optionnels qui doivent être spécifiés par arguments nommés.

key spécifie une fonction à un argument utilisée pour extraire une clé de comparaison de chaque élément de l'itérable (par exemple, key=str.lower). La valeur par défaut est None (compare les éléments directement).

reverse est 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 garantit de ne pas changer l'ordre relatif des éléments égaux entre eux. C'est utile pour trier en plusieurs passes (par exemple par direction puis par salaire).

L'algorithme de tri utilise uniquement l'opérateur < pour comparer les éléments. Alors que la définition d'une méthode __lt__() est suffisante pour trier, la PEP 8 recommande que les six comparaisons riches soient implémentées. Cela contribue à éviter les bogues lors de l'utilisation des mêmes données avec d'autres outils de tri (tels que max()) qui reposent sur une méthode sous-jacente différente. L'implémentation des six comparaisons permet également d'éviter toute confusion lors de comparaisons de types mixtes qui peuvent appeler la méthode __gt__().

Pour des exemples de tris et un bref tutoriel, consultez Sorting Techniques.

@staticmethod

Transforme une méthode en méthode statique.

Une méthode statique ne reçoit pas de premier argument implicitement. Voici comment déclarer une méthode statique :

class C:
    @staticmethod
    def f(arg1, arg2, argN): ...

La forme @staticmethod est un décorateur de fonction. Consultez Définition de fonctions pour plus de détails.

Une méthode statique peut être appelée sur une classe (par exemple, C.f()) comme sur une instance (par exemple, C().f()). De plus, elles peuvent être appelées comme des fonctions habituelles (comme f()).

Les méthodes statiques en Python sont similaires à celles que l'on trouve en Java ou en C++. Consultez classmethod() pour une variante utile permettant de créer des constructeurs alternatifs.

Comme pour tous les décorateurs, il est possible d'appeler staticmethod comme une simple fonction, et faire quelque chose de son résultat. Ça peut être nécessaire dans le cas où vous souhaitez une référence à la fonction depuis le corps d'une classe, et voulez éviter sa transformation en méthode d'instance. Dans ce cas, faites comme suit :

def regular_function():
    ...

class C:
    method = staticmethod(regular_function)

Pour plus d'informations sur les méthodes statiques, consultez Hiérarchie des types standards.

Modifié dans la version 3.10: les méthodes statiques héritent dorénavant des attributs des méthodes (__module__, __name__, __qualname__, __doc__ et __annotations__), ont un nouvel attribut __wrapped__ et sont maintenant appelables comme les fonctions habituelles.

class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')

Renvoie une version d'object sous forme de str. Voir str() pour plus de détails.

str est la classe 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=0)

Additionne start et les éléments d'un iterable de gauche à droite et en donne le total. Les éléments de l'iterable sont normalement des nombres, et la valeur de start ne peut pas être une chaîne de caractères.

Pour certains cas, il existe de bonnes alternatives à sum(). La bonne méthode, rapide, pour 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, voir math.fsum(). Pour concaténer une série d'itérables, utilisez plutôt itertools.chain().

Modifié dans la version 3.8: le paramètre start peut être passé comme un argument nommé.

Modifié dans la version 3.12: Summation of floats switched to an algorithm that gives higher accuracy on most builds.

class super
class super(type, object_or_type=None)

Renvoie un objet mandataire (proxy object en anglais) déléguant les appels de méthode à une classe parente ou sœur de type. C'est utile pour accéder aux méthodes héritées qui ont été remplacées dans une classe.

object_or_type détermine quel ordre de résolution des méthodes est utilisé pour la recherche. La recherche commence à partir de la classe qui suit immédiatement le type.

Par exemple, si __mro__ de object_or_type est D -> B -> C -> A -> object et la valeur de type est B, alors super() recherche C -> A -> object.

L'attribut __mro__ de object_or_type liste l'ordre de recherche de la méthode de résolution utilisée par getattr() et super(). 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ée 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 ces implémentations doivent avoir la même signature lors de leur appel 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)

En plus de la recherche de méthodes, super() fonctionne également pour la recherche d'attributs. Un cas d'utilisation possible est l'appel d'un descripteur d'une classe parente ou sœur.

Note that super() is implemented as part of the binding process for explicit dotted attribute lookups such as super().__getitem__(name). It does so by implementing its own __getattribute__() method for searching classes in a predictable order that supports cooperative multiple inheritance. Accordingly, super() is undefined for implicit lookups using statements or operators such as super()[name].

Notez aussi que, en dehors de sa forme sans argument, super() peut être utilisée en dehors des méthodes. La forme à deux arguments est précise et contient tous les arguments nécessaires, donnant les références appropriées. La forme sans argument 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().

class tuple
class tuple(iterable)

Ce n'est pas une fonction, tuple est en fait un type de séquence immuable, comme documenté dans N-uplets et Types séquentiels — list, tuple, range.

class type(object)
class type(name, bases, dict, **kwds)

Avec un argument, renvoie le type d'object. La valeur renvoyé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 n-uplet bases contient les classes mères et deviendra l'attribut __bases__. S'il est vide, object, la classe mère ultime de toutes les classes, est ajoutée. Le dictionnaire dict contient les définitions des attributs et des méthodes du corps de la classe ; il peut être copié ou encapsulé vers un dictionnaire standard pour devenir l'attribut __dict__. Par exemple, les deux instructions suivantes créent deux instances identiques de type :

>>> class X:
...     a = 1
...
>>> X = type('X', (), dict(a=1))

Voir aussi Objets type.

Les arguments nommés fournis à la forme à trois arguments sont passés au mécanisme de métaclasse approprié (généralement __init_subclass__()) de la même manière que les arguments nommés dans une définition de classe (en plus de metaclass).

Voir aussi Personnalisation de la création de classes.

Modifié dans la version 3.6: les sous-classes de type qui ne redéfinissent pas type.__new__ ne doivent plus utiliser la forme à un argument pour récupérer le type d'un objet.

vars()
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__.

Certains objets, comme les modules et les instances, ont un attribut __dict__ modifiable ; cependant, d'autres objets peuvent avoir des restrictions en écriture sur leurs attributs __dict__ (par exemple, les classes utilisent un types.MappingProxyType pour éviter les modifications directes du dictionnaire).

Sans argument, vars() se comporte comme locals(). Notez que le dictionnaire des variables locales n'est utile qu'en lecture, car ses écritures sont ignorées.

Une exception TypeError est levée si un objet est spécifié mais qu'il n'a pas d'attribut __dict__ (par exemple, si sa classe définit l'attribut __slots__).

zip(*iterables, strict=False)

Itère sur plusieurs itérables en parallèle, produisant des n-uplets avec un élément provenant de chacun.

Exemple :

>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):
...     print(item)
...
(1, 'sugar')
(2, 'spice')
(3, 'everything nice')

Plus formellement : zip() renvoie un itérateur de n-uplets, où le ie n-uplet contient le ie élément de chacun des itérables passés en arguments.

Une autre façon de voir zip() est qu'elle transforme les lignes en colonnes et les colonnes en lignes, fournissant la matrice transposée.

zip() est paresseuse : les éléments ne sont traités qu'au moment où l'on itère, par exemple avec une boucle for ou en les plaçant dans une liste.

Il faut savoir que les itérables passés à zip() peuvent avoir des longueurs différentes ; parfois par conception, parfois à cause d'un bogue dans le code qui a préparé ces itérables. Python propose trois approches différentes pour traiter ce problème :

  • par défaut, zip() s'arrête lorsque l'itérable le plus court est épuisé. Elle ignore les éléments restants dans les itérables plus longs, coupant le résultat à la longueur de l'itérable le plus court :

    >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum']))
    [(0, 'fee'), (1, 'fi'), (2, 'fo')]
    
  • zip() est souvent utilisée dans les cas où les itérables sont supposés être de même longueur. Dans ce cas, il est recommandé d'utiliser l'option strict=True. Cela produit la même chose que la zip() habituelle :

    >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True))
    [('a', 1), ('b', 2), ('c', 3)]
    

    Mais, contrairement au comportement par défaut, elle lève une ValueError si un itérable est épuisé avant les autres :

    >>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True):  
    ...     print(item)
    ...
    (0, 'fee')
    (1, 'fi')
    (2, 'fo')
    Traceback (most recent call last):
      ...
    ValueError: zip() argument 2 is longer than argument 1
    

    Sans l'argument strict=True, tout bogue entraînant des itérables de longueurs différentes est réduit au silence, se manifestant éventuellement comme un bogue difficile à trouver dans une autre partie du programme.

  • les itérables plus courts peuvent être remplis avec une valeur constante pour que tous les itérables aient la même longueur. C'est le cas pour itertools.zip_longest().

Cas extrêmes : avec un seul argument itérable, zip() renvoie un itérateur de « 1-uplet ». Sans argument, elle renvoie un itérateur vide.

Trucs et astuces :

  • il est garanti que les itérables sont évalués de gauche à droite. Cela rend possible de grouper une séquence de données en groupes de taille n via zip(*[iter(s)]*n, strict=True). Cela duplique le même itérateur n fois ; par conséquent le n-uplet obtenu contient le résultat de n appels à l'itérateur. Cela a pour effet de diviser la séquence en morceaux de taille n.

  • zip() peut être utilisée conjointement avec l'opérateur * pour dézipper une liste :

    >>> x = [1, 2, 3]
    >>> y = [4, 5, 6]
    >>> list(zip(x, y))
    [(1, 4), (2, 5), (3, 6)]
    >>> x2, y2 = zip(*zip(x, y))
    >>> x == list(x2) and y == list(y2)
    True
    

Modifié dans la version 3.10: ajout de l'argument strict.

__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 module builtins et en y remplaçant builtins.__import__) afin de changer la sémantique de l'instruction import, mais c'est extrêmement déconseillé, car il est plus simple d'utiliser des points d'entrée pour les importations (import hooks, voir la PEP 302) pour le même résultat sans perturber du code s'attendant à trouver l'implémentation par défaut. L'usage direct de __import__() est aussi déconseillé en faveur de importlib.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 importation absolue ou relative. 0 (par défaut) force à effectuer uniquement des importations absolues. 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 de plus haut niveau (le nom jusqu'au premier point) est renvoyé, et pas le module nommé par name. Cependant, lorsqu'un argument fromlist est fourni, le module nommé par name est renvoyé.

Par exemple, l'instruction import spam renvoie un code intermédiaire (bytecode en anglais) ressemblant au code suivant :

spam = __import__('spam', globals(), locals(), [], 0)

L'instruction import spam.ham appelle :

spam = __import__('spam.ham', globals(), locals(), [], 0)

Notez comment __import__() renvoie ici le module de plus haut niveau parce que c'est l'objet lié à un nom par l'instruction import.

En revanche, l'instruction from spam.ham import eggs, sausage as saus donne

_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
eggs = _temp.eggs
saus = _temp.sausage

Ici le module spam.ham est renvoyé 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: les valeurs négatives pour level ne sont plus prises en charge (et sa valeur par défaut est 0).

Modifié dans la version 3.9: Quand les options -E ou -I sont précisées dans la ligne de commande, la variable d'environnement PYTHONCASEOK est ignorée.

Notes