L'interpréteur Python possède un certain nombre de fonctions intégrées qui sont toujours disponibles. Elles sont listées ci-dessous dans l'ordre alphabétique.
Par exemple, l'instruction ` Quand la variable nom est de la forme Cette fonction peut aussi servir à exécuter des objets code arbitraires
(c'est-à-dire créé par compile()). Dans ce cas, passez un objet
code à la place d'une chaîne de caractères. L'objet code doit avoir été
compilé en passant Astuce: l'exécution dynamique d'instructions est supporté par
l'instruction exec. L'exécution d'instructions depuis un
fichier est supportée par la fonction execfile().
Les fonctions globals() et locals()
retournent les dictionnaires global et local courants, respectivement,
qu'il peut être utile de passer pour une utilisation de
eval() ou de execfile().
Les arguments sont un nom de fichier et deux dictionnaires
optionnels. Le fichier est analysé et évalué comme une séquence
d'instructions Python (comme pour un module) en se servant des
dictionnaires global et local comme espace de noms
global et local. Si le dictionnaire local est omis il prend
par défaut la valeur du dictionnaire global. Si les deux
dictionnaires sont omis, l'expression est exécutée dans l'environnement
dans lequel execfile() a été appelé. La valeur de retour est
Note: Quand on passe une chaîne, les valeurs NaN et Infinity peuvent être retournées, selon la
bibliothèque C sous-jacente. L'ensemble spécifique des chaînes acceptées
qui donnent ces valeurs de retour dépend entièrement de la
bibliothèque C sous-jacente et est notoirement variable.
Si le module readline a été chargé, alors input()
s'en servira pour fournir une édition de ligne sophistiquée et des
fonctionnalités d'historique.
Pensez à utiliser la fonction raw_input() pour gérer les entrées
utilisateur d'une façon générale.
Les modes Si mode est omis, sa valeur par défaut est Si le module readline était chargé, alors raw_input() s'en servira pour fournir des fonctions élaborées d'édition de ligne et d'historique.
Il y a un certain nombre de chausses-trappes:
Si le module est syntaxiquement correct mais que l'initialisation échoue, la première instruction import ne fait pas entrer son nom dans l'espace de nom local, mais un objet module (partiellement initialisé) est stocké dans Quand un module est rechargé, son dictionnaire (contenant les variables globales du module) est conservé. Les redéfinitions de noms écraseront les anciennes définitions, donc ceci ne pose généralement pas de problème. Si la nouvelle version d'un module ne définit pas un nom qui était défini dans par l'ancienne version, l'ancienne définition subsiste. On peut tirer avantage de cette fonctionnalité si le module maintient une table globale ou un cache des objets - avec une instruction try il peut tester la présence de la table et sauter son initialisation au besoin.
Il est autorisé, bien que généralement pas très utile, de recharger les modules intégrés ou chargé dynamiquement, sauf sys, __main__ et __builtin__. Dans de nombreux cas, cependant, les modules d'extension ne sont pas conçus pour être initialisés plus d'une fois, et peuvent planter de façon arbitraire si on les recherge.
Si un module importe des objets depuis un autre module en utilisant from ... import ..., l'appel de reload() pour l'autre module ne redéfinit pas les objets importés depuis celui-ci - une façon de contourner ce problème est de réexécuter l'instruction from, une autre est d'utiliser import et des noms qualifiés (module.name) à la place.
Si un module instancie des instances d'une classe, recharger le module qui définit la classe n'affecte pas les définitions de méthodes des instances - elles continuent à utiliser les anciennes définitions de classes. Il en est de même des classes dérivées.
__import__(nom[, global[, local[, depuisliste]]])
import spam' provoque l'appel
suivant:
__import__('spam', global(), local(), []);
l'instruction from spam.jambon import oeufs provoque l'appel
de __import__('spam.jambon', global(), local(),['oeufs']).
Notez que bien que locals() et ['oeufs'] soient passées
comme arguments, la fonction __import__() n'affecte pas de valeur
à la variable locale appelée oeufs; ceci est fait par la suite du code
qui est généré pour l'instruction import. (En fait, l'implémentation standard
n'utilise pas du tout son argument local, et ne se sert de globalque pour déterminer le contexte du package de l'instruction import.)
package.module,
normalement, le package de niveau supérieur (le nom avant le
premier point) est retourné, pas le module appelé nom.
Cependant, quand un argument depuisliste non vide est fourni,
le module de nom nom est retourné. Ceci est fait pour garantir
la compatibilité avec le bytecode généré pour les différentes formes
de l'instruction import; quand on utilise "import spam.jambon.oeufs",
le package de niveau supérieur spam doit être placé dans
l'espace de noms qui importe, mais quand on utilise "from
spam.jambon import oeufs", le sous-package spam.jambon
doit être utilisé pour trouver la variable oeufs.
Comme introduction à ce comportement, utilisez getattr()pour extraire les composants désirés. Par exemple, vous pourriez
définir la fonction d'aide suivante:
import string
def my_import(nom):
mod = __import__(nom)
composants = string.split(noms, '.')
for comp in composants[1:]:
mod = getattr(mod, comp)
return mod
abs(x)
apply(fonction, args[, motscles])
fonction(args), puisque dans ce cas il y a
toujours exactement un argument.)
Si l'argument optionnel motscles est présent, il doit s'agir
d'un dictionnaire dont les clés sont des chaînes de caractères. Il
spécifie les arguments mots-clés à ajouter à la fin de la liste
d'arguments.
buffer(objet[, decalage[, taille]])
callable(objet)
chr(i)
chr(97) retourne la chaîne 'a'.
C'est l'inverse de la fonction ord(). L'argument
doit être dans l'intervalle [0..255] inclus; ValueError
sera déclenché si i est en-dehors de cet intervalle.
cmp(x, y)
x < y, zéro si x == y et strictement positif si
x > y.
coerce(x, y)
compile(chaine, fichier, genre)
'<string>' s'il n'a pas été lu depuis un fichier. L'argument genre spécifie
quel genre de code doit être compilé; il peut s'agir de 'exec' si
chaine consiste en une séquence d'instructions, 'eval' s'il consiste en une expression unique, ou 'single' s'il
consiste en une instruction interactive unique (dans ce dernier cas,
les instructions d'expressions dont le résultat est autre chose que
None seront affichées).
complex(reel[, imag])
delattr(objet, nom)
delattr(x, 'foobar') équivaut à
del x.foobar.
dir([objet])
>>> import sys
>>> dir()
['sys']
>>> dir(sys)
['argv', 'exit', 'modules', 'path', 'stderr', 'stdin', 'stdout']
divmod(a, b)
(a / b, a % b).
Pour les nombres à virgule flottante le résultat est (q, a %
b), où q est habituellement math.floor(a /
b) mais peut être inférieur de 1 à ce résultat.
Dans tous les cas q *
b + a % b est très proche de a, si
a % b est non nul il a le même signe que
b, et 0 <= abs(a % b) < abs(b).
eval(expression[, global[, local]])
>>> x = 1
>>> print eval('x+1')
2
'eval' à l'argument kind.
execfile(fichier[, global[, local]])
None.
filter(fonction, liste)
None, on prend la fonction d'identité,
c'est-à-dire que tous les éléments de liste qui sont faux (zéro
ou vides) sont enlevés.
float(x)
string.atof(x). Sinon, l'argument peut être un entier
simple ou long, ou un nombre à virgule flottante, et un nombre à
virgule flottante de même valeur (dans la limite de la précision en
virgule flottante de Python) est retournée.
getattr(objet, nom[, defaut])
getattr(x, 'foobar') équivaut à x.foobar.
Si l'attribut nommé n'existe pas, defaut est retourné s'il
existe, sinon AttributeError est déclenchée.
globals()
hasattr(objet, nom)
getattr(object, nom) et en voyant si une
exception est déclenchée ou non.)
hash(objet)
hex(x)
hex(-1) retourne '0xffffffff'.
Quand il est évalué sur une machine qui a la même taille de mots,
ce littéral est évalué comme -1; avec une taille de mots différente, le
résultat peut être un grand nombre positif ou une exception
OverflowError peut être déclenchée.
id(object)
input([invite])
eval(raw_input(invite)).
Avertissement: Cette fonction ne résiste pas aux erreurs
de l'utilisateur! Elle s'attend à recevoir une expression Python
valide comme donnée d'entrée; si ce n'est pas le cas, une
SyntaxError sera déclenchée.
D'autres exceptions peuvent être déclenchées si une erreur se
produit pendant l'évaluation. (D'ailleurs, parfois c'est exactement
ce que vous voulez quand vous écrivez un script rapide pour utilisation
en expert.)
int(x[, base])
string.atoi(x[, base]). Le paramètre
base donne la base pour la conversion et peut être n'importe quel
entier dans l'intervalle [2, 36]. Si base est spécifiée et que
x n'est pas une chaîne de caractères, TypeError est
déclenchée. Sinon, l'argument peut être un entier simple ou long ou un
nombre à virgule flottante. La conversion de nombres à virgule flottante
en entier est définie par la sémantique du C; normalement la conversion
arrondit à l'entier inférieur.2intern(chaine)
isinstance(objet, classe)
issubclass(classe1, classe2)
len(s)
list(sequence)
sequence[:]. Par exemple, list('abc') retourne
['a', 'b', 'c'] et list( (1, 2, 3) ) retourne
[1, 2, 3].
locals()
long(x)
string.atol(x). Sinon, l'argument peut être un entier
simple ou long, ou un nombre à virgule flottante, et un entier long
de même valeur est retourné. La conversion de nombres à virgule flottante
en entier est définie par la sémantique du C; voir la description de
int().
map(fonction, liste, ...)
None. Si fonction est None, on prend la
fonction d'identité; s'il y a plusieurs listes d'arguments,
map() retourne une liste constituée de tuples contenant les
éléments correspondants de toutes les listes (c'est-à-dire une espèce
d'opération de transposition). Les arguments list peuvent être
n'importe quelle sorte de séquence; le résultat est toujours une liste.
max(s[, args...])
min(s[, args...])
oct(x)
hex(-1) retourne '037777777777'.
Quand il est évalué sur une machine qui a la même taille de mots,
ce littéral est évalué comme -1; avec une taille de mots différente, le
résultat peut être un grand nombre positif ou une exception
OverflowError peut être déclenchée.
open(nomfichier[, mode[, taillebuf]])
stdio: nomfichier
est le nom du fichier à ouvrir, mode indique comment le fichier
doit être ouvert: 'r' en lecture, 'w' en écriture
(en tronquant un fichier existant), et 'a' en mode ajout
(ce qui sur certains systèmes Unix signifie que toutes les écritures ajoutent à la fin du fichier, indépendamment de la
position de recherche courante).
'r+', 'w+' et 'a+' ouvrent le fichier pour
mise à jour (notez que 'w+' tronque le fichier). Ajoutez
'b' au mode pour ouvrir le fichier en mode binaire, sur les systèmes
qui différencient les fichiers binaires et texte (sinon il est ignoré). Si
le fichier ne peut pas être ouvert, IOError est déclenchée.
'r'. En ouvrant un
fichier binaire, vous devez ajouter 'b' à la valeur du mode pour améliorer la portabilité. (C'est utile même sur les systèmes qui ne
traitent pas les fichiers texte et binaires différemment, où cela sert de
documentation.)
L'argument optionnel taillebuf spécifie la taille de buffer voulue
pour le fichier: 0 signifie sans buffer, 1 avec buffer par ligne, et toute
autre valeur positive indique l'usage d'un buffer de cette taille
(approximativement). Avec une taillebuf négative on prend la valeur
par défaut du système, qui est généralement buffer par ligne pour les
appareils tty et avec buffer complet pour les autres fichiers. Si ce
paramètre est omis, la valeur par défaut du système est utilisée.
3ord(c)
ord('a') retourne l'entier 97,
ord(u'2020') retourne 8224. C'est l'inverse de chr() pour les chaînes de caractères et de unichr() pour les caractères Unicode.
pow(x, y[, z])
pow(x, y) % z).
Les arguments doivent être de type numérique. Avec des opérandes de types différents,
les règles pour les opérateurs arithmétiques binaires s'appliquent. Le type effectif de l'opérande détermine le type du résultat ; si le résultat ne peut pas s'exprimer dans ce type, la fonction déclenche une exception; par exemple, pow(2, -1) ou pow(2,
35000) ne sont pas autorisés.
range([debut, ]fin[, pas])
1. Si l'argument debut est omis, il prend la valeur 0 par défaut. La forme complète retourne une liste d'entiers simples [debut, debut + pas, debut + 2 * pas, ...]. Si pas est positif,le dernier élément est le plus grand debut + i * pas inférieur à fin; si pas est négatif, le dernier élément est le plus grand debut + i * pas plus grand que fin. pas ne doit pas être nul (sinon ValueError est déclenchée). Exemple:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)
[0, 3, 6, 9]
>>> range(0, -10, -1)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
raw_input([invite])
>>> s = raw_input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"
reduce(fonction, sequence[, initializer])
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calcule ((((1+2)+3)+4)+5). Si la valeur optionnelle initializer est présente, elle est placée devant les éléments de la séquence dans le calcul, et sert de valeur par défaut quand la séquence est vide.
reload(module)
sys.modules. Pour recherger le module il faut d'abord refaire un import (ce qui associera le nom à l'objet partiellement initialisé) avant de pouvoir exécuter un reload().
repr(objet)
round(x[, n])
round(0.5) vaut 1.0 et coderound(-0.5) vaut -1.0).
setattr(objet, nom, valeur)
setattr(x, 'truc', 123) équivaut à x.truc = 123.
slice([debut, ]fin[, pas])
range(debut, fin, pas). Les arguments debut et pas prennent la valeur None par défaut. Les objets tranche ont des attributs en lecture seule start, stop et step qui retournent simplement les valeurs des arguments (ou leurs valeurs par défaut). Ils n'ont pas d'autre fonctionnalités; cependant elles sont utilisées par Numerical Python et d'autres extensions tierces. Les objets tranche sont aussi générés quand une syntaxe d'indiçage étendu est utilisée, par exemple pour "a[debut:fin:pas]" ou "a[debut:fin, i]".
str(objet)
repr(objet) est que str(objet) n'essaie pas toujours de retourner une chaîne acceptable comme argument de eval(); son but est de retourner une chaîne imprimable.
tuple(sequence)
tuple('abc') retourne ('a', 'b', 'c') et tuple([1, 2, 3]) retourne (1, 2, 3).
type(objet)
>>> import types
>>> if type(x) == types.StringType: print "C'est une chaîne"
unichr(i)
unichr(97) retourne la chaîne u'a'. C'est l'inverse de ord() pour les chaînes Unicode. L'argument doit être dans l'intervalle [0..65535], bornes incluses.
ValueError est déclenchée sinon.
Nouveau en version 2.0unicode(chaine[, encodage[, erreurs]])
vars([objet])
xrange([debut, ]fin[, pas])
zip(seq1, ...)
None. Avec une seule séquence comme argument, elle retourne une liste de tuples à 1 élément.
Nouveau en version 2.0
Notes