Syntaxe
compile(chaine, nomdufichier, sorte)
|
compile(chaine, nomdufichier, sorte, drapeaux)
|
compile(chaine, nomdufichier, sorte, drapeaux, dont_inherit)
|
Paramètres
Nom |
Description |
chaine |
Ce paramètre permet d'indiquer la chaîne de caractères à traiter |
nomdufichier |
Ce paramètre permet d'indiquer le nom du fichier |
sorte |
Ce paramètre permet d'indiquer quel type de code doit être compilé; il peut être 'exec' si la source se compose d'une séquence d'instructions, 'eval' s'il se compose d'une
seule expression (notez que vous ne pouvez pas utiliser d'instructions dans ce mode; seule une (single) expression est valide) ou 'single' s'il se compose d'une seule instruction
interactive (dans ce dernier cas, les instructions d'expression évaluées à autre chose que None seront affichées). |
drapeaux |
Ce paramètre permet de spécifier les options |
dont_inherit |
Ce paramètre permet de spécifier les options à ne pas hériter.
Les paramètres optionnels drapeaux et dont_inherit contrôlent quelles instructions futures (voir PEP 236) affectent la compilation de la source. Si aucun n'est
présent (ou les deux sont nuls), le code est compilé avec les futures instructions étant en vigueur dans le code appelant la compilation. Si le paramètre drapeaux est donné et
dont_inherit n'existe pas (ou est nul), les futures instructions spécifiées par le paramètres drapeaux sont utilisées en plus de celles étant utilisées de toute façon.
Si dont_inherit est un entier non nul, alors le paramètre drapeaux l'est, les futures instructions en vigueur autour de l'appel à la compilation sont ignorées. |
Description
Cette fonction permet de compiler une chaîne de caractères en un code ou en objet AST.
Les objets de code peuvent être exécutés par une instruction exec ou évalués par un appel à eval(). Le paramètre chaine peut
être une chaîne de caractères Unicode, une chaîne de caractères codée en latin-1 ou un objet AST.
Remarques
- Le paramètre du nom de fichier doit indiquer le fichier à partir duquel le code a été lu et transmettre une valeur reconnaissable s'il n'a pas été lu à partir d'un fichier
('<string>' est couramment utilisé).
- Le paramètre mode spécifie quel type de code doit être compilé; il peut être 'exec' si la source spécifié par chaine est constituée d'une séquence
d'instructions, 'eval' si elle consiste en une seule expression ou 'single' si elle consiste en une seule instruction interactive (dans ce dernier cas, les
expressions valant quelque chose autre que None ne sera affiché).
- Les paramètres facultatifs flags et dont_inherit déterminent quelles instructions futures (voir PEP 236) affectent la compilation de la source. Si aucun des deux n'est
présent (ou les deux valent zéro), le code est compilé avec les instructions futures en vigueur dans le code appelant compile(). Si le paramètre flags est donné et que
dont_inherit est not (ou vaut zéro), les instructions futures spécifiées par le paramètre flags sont utilisées en plus de celles le servant de toute façon. Si dont_inherit
est un entier non nul, alors le paramètre flags est le même - les déclarations futures en vigueur autour de l'appel à la compilation sont ignorées.
- Les instructions futures sont spécifiées par des bits pouvant être combinés bit à bit pour spécifier plusieurs instructions. Le champ binaire requis pour spécifier une fonctionnalité donnée peut
être trouvé en tant qu'attribut compiler_flag sur l'instance _Feature dans le module __future__.
- La fonction compile déclenche SyntaxError si la source compilée n'est pas valide et TypeError si la source contient des octets nuls.
- Si vous souhaitez analyser le code Python dans sa représentation AST, vous devriez consultez la fonction ast.parse().
- Lors de la compilation d'une chaîne de caractères avec un code multiligne en mode 'single' ou 'eval', la saisie doit être terminée par au moins un caractère
de nouvelle ligne. Cette situation facilite la détection des déclarations incomplètes et complètes dans le module de code.
- Il est possible de bloquer l'interpréteur Python avec une chaîne de caractères suffisamment grande ou complexe lors de la compilation en un objet AST en raison de limitations de
profondeur de pile dans le compilateur AST de Python.
- A partir de la version 2.3 de Python, les paramètres drapeaux et dont_inherit ont été ajoutés.
- A partir de la version 2.6 de Python, la prise en charge de la compilation d'objets AST.
- A partir de la version 2.7 de Python, il est possible d'utiliser des nouvelles lignes de format Windows et
Mac. De plus, l'entrée en mode 'exec' ne doit plus nécessairement se terminer par une nouvelle ligne.
Dernière mise à jour : Mercredi, le 14 septembre 2016