COMPILE |
Compile |
---|---|
Python |
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.
Algorithme
* Entrées : * source : Chaîne de caractères contenant le code source à compiler * filename : Nom du fichier source (ou une chaîne de caractères indiquant l'origine du code, par ex. '<string>') * mode : Type de code à compiler, l'une des valeurs : 'exec', 'eval', ou 'single' * * Sortie : * Objet code compilé utilisable par exec() ou eval() MODULE COMPILE(source, filename, mode) * Vérifier que le mode est valide SI mode est 'exec', 'eval', ou 'single' ALORS Continuer SINON Lever une exception ValueError FIN SI * Analyser le code source donné SI le mode est 'eval' (expression unique) ALORS Compiler le source en tant qu'expression. FIN SI SI le mode est 'exec' (ensemble d'instructions) ALORS Compiler le source en tant que suite d'instructions. FIN SI SI le mode est 'single' (une seule instruction, typiquement pour l'interpréteur interactif) ALORS Compiler le source en tant qu'instruction unique. FIN SI Créer un objet code compilé. RETOURNE l'objet code compilé. |
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