Maison  >  Article  >  développement back-end  >  fonction python, fonction compile()

fonction python, fonction compile()

巴扎黑
巴扎黑original
2017-08-18 13:51:003241parcourir

compile(source, filename, mode[, flags[, dont_inherit]])

Description chinoise : Compile la source en code ou en objet AST. Les objets de code peuvent être exécutés via l'instruction exec ou évalués avec eval().

Source du paramètre : chaîne ou objet AST (Abstract Syntax Trees).

Nom de fichier de paramètre : nom du fichier de code, transmettez une valeur identifiable si le code n'est pas lu à partir d'un fichier.

Modèle de paramètre : Spécifie le type de code compilé. Peut être spécifié comme « exec », « eval », « single ».

Paramètres flag et dont_inherit : Ces deux paramètres ne seront pas encore introduits, ce sont des paramètres facultatifs.

Version : Elle est différente dans python2.3, 2.6, 2.7 et 3.2. Veuillez faire attention lorsque vous l'utilisez. Elle est compatible avec python3

. Instructions en anglais

Compilez la source dans un code ou un objet AST. Les objets de code peuvent être exécutés par une instruction exec ou évalués par un appel à la source eval(). object. Reportez-vous à la documentation du module ast pour plus d'informations sur la façon de travailler avec les objets AST.

L'argument du nom de fichier doit donner au fichier à partir duquel le code a été lu, transmettre une valeur reconnaissable s'il n'a pas été lu à partir d'un fichier ; file ('< ;string>' est couramment utilisé).

L'argument mode spécifie quel type de code doit être compilé, il peut être 'exec' si la source est constituée d'une séquence d'instructions, 'eval' si ; il se compose d'une seule expression, ou « unique » s'il s'agit d'une seule instruction interactive (dans ce dernier cas, les instructions d'expression qui donnent autre chose que None seront imprimées).

Les arguments facultatifs flags et dont_inherit contrôle quelles instructions futures (voir PEP 236) affectent la compilation de la source. Si aucune n'est présente (ou si les deux sont nulles), le code est compilé avec les instructions futures qui sont en vigueur dans le code qui appelle compile. est donné et dont_inherit ne l'est pas (ou vaut zéro), alors les instructions futures spécifiées par l'argument flags sont utilisées en plus de celles qui seraient utilisées de toute façon. Si dont_inherit est un entier non nul, alors l'argument flags est celui-ci – les instructions futures. en vigueur autour de l'appel à la compilation sont ignorés.

Les instructions futures sont spécifiées par des bits qui peuvent être combinés par un OU au niveau du bit pour spécifier plusieurs instructions. Le champ de bits requis pour spécifier une fonctionnalité donnée peut être trouvé sous la forme de l'attribut compiler_flag sur le. _Feature instance dans le module __future__.

Cette fonction génère SyntaxError si la source compilée n'est pas valide, et TypeError si la source contient des octets nuls.

Remarque Lors de la compilation d'une chaîne avec du code multiligne dans En mode 'single' ou 'eval', la saisie doit être terminée par au moins un caractère de nouvelle ligne afin de faciliter la détection des instructions incomplètes et complètes dans le module de code.

Modifié dans la version 2.3 : Le des drapeaux et des arguments dont_inherit ont été ajoutés.

Modifié dans la version 2.6 : Prise en charge de la compilation des objets AST.

Modifié dans la version 2.7 : Utilisation autorisée de Les nouvelles lignes Windows et Mac. De plus, la saisie en mode 'exec' ne doit plus nécessairement se terminer par une nouvelle ligne.

Exemple de code :

>>> code = "for i in range(0, 10): print i"
>>> cmpcode = compile(code, &#39;&#39;, &#39;exec&#39;)
>>> exec cmpcode
0
1
2
3
4
5
6
7
8
9
>>> str = "3 * 4 + 5"
>>> a = compile(str,&#39;&#39;,&#39;eval&#39;)
>>> eval(a)
17

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn