Maison > développement back-end > Tutoriel Python > Fonction intégrée Python——compiler

Fonction intégrée Python——compiler

黄舟
Libérer: 2017-01-19 16:42:37
original
2303 Les gens l'ont consulté

Fonction intégrée Python - compiler

compilecompile(source, filename, mode[, flags[, dont_inherit,[optimize]]])
1. used Compilez le code source d'une chaîne, et le résultat peut générer du bytecode ou AST (Abstract Syntax Tree
Le bytecode peut être exécuté à l'aide de la fonction exec(), et AST peut être compilé à l'aide de eval().
2. Le paramètre source est le code source d'une chaîne, ou d'un tableau d'objets AST.
3. Le paramètre filename est l'objet fichier pour lire les chaînes
Si le code source n'est pas lu à partir du fichier pour la compilation, alors certaines chaînes utilisées pour identifier ces codes peuvent être placées ici.
4. Le paramètre mode est utilisé pour indiquer le type de code source représenté
S'il s'agit d'un type exec, cela signifie qu'il s'agit d'une instruction de séquence qui peut être exécutée
S'il s'agit d'un eval ; type, cela signifie qu'il s'agit d'une seule instruction d'expression peut être utilisée pour calculer la valeur correspondante ;
S'il s'agit d'une seule instruction, cela signifie qu'il s'agit d'une instruction unique, qui est exécutée en mode interactif
. Dans ce cas, s'il s'agit d'une expression, le résultat sera généralement affiché au lieu d'imprimer la sortie Aucune.
5. Les paramètres facultatifs flags et dont_inherit sont utilisés pour contrôler les indicateurs lors de la compilation du code source
Vous pouvez consulter le document PEP236 pour en savoir plus sur ces paramètres et les instructions de compilation associées.
Si les deux utilisent des paramètres par défaut (c'est-à-dire que les deux sont des valeurs nulles),
Lors de l'appel de cette fonction pour la compilation, elle sera principalement traitée en utilisant les fonctionnalités de compilation spécifiées dans le code
Si le paramètre flags est ; défini sur valeur, et dont_inherit n'est pas défini (c'est-à-dire qu'il s'agit d'une valeur nulle),
alors lors de la compilation du code, non seulement les fonctionnalités de compilation du code source fonctionneront, mais également les fonctionnalités spécifiées par les indicateurs fonctionneront, ce qui équivaut à l'union des deux ;
Si le paramètre dont_inherit est défini pour avoir une valeur (c'est-à-dire une valeur non nulle
Lors de la compilation d'une instruction, seules les valeurs des fonctionnalités de compilation sont spécifiées). par le paramètre, les drapeaux prennent effet, c'est-à-dire que les fonctionnalités spécifiées dans le code source ne sont pas utilisées.
Les fonctionnalités de compilation sont définies sur des paramètres au format bitmap, qui peuvent être visualisés dans __future__.
6. Le paramètre facultatif optimiser est utilisé pour indiquer le niveau d'optimisation utilisé par le compilateur ;
La valeur par défaut est -1, ce qui signifie que le niveau d'optimisation obtenu dans le paramètre de ligne de commande -O prévaudra ; 🎜>Si défini La valeur est 0 (c'est-à-dire qu'aucune optimisation n'est requise, __debug__ est défini sur true), ce qui signifie qu'il n'y a pas d'optimisation
Si la valeur est définie sur 1, l'instruction assert est supprimée et __debug__ ; est défini sur false;
Si la valeur est définie sur 2, sauf En plus des fonctions définies sur 1, la documentation dans le code sera également supprimée pour obtenir les meilleurs résultats d'optimisation.
7. Lorsque cette fonction compile le code, elle retournera SyntaxError s'il y a une erreur de syntaxe ;
Si le code contient des octets nuls, elle retournera TypeError.
Remarques :
1. Lors de la compilation avec un type unique ou eval,
S'il y a plusieurs lignes de code, il doit y avoir au moins un saut de ligne après chaque ligne de code, sinon cela demandera la compilation lors de la compilation. le module de code Le code source est une erreur incomplète.
Après la version Python 3.2, il est autorisé de saisir le caractère de nouvelle ligne de Windows ou Mac
2 Lors de l'utilisation du mode exécutable, il n'est pas nécessaire de saisir le caractère de nouvelle ligne après chaque ligne, paramètres d'optimisation ; sont ajoutés.

In [16]: str = "for i in range(10): print(i)"
In [17]: c = compile(str,'','exec') #编译为字节代码对象
In [18]: exec(c)
0
1
2
3
4
5
6
7
8
9
In [19]: str = "3*x + 4*y"
In [20]: c = compile(str,'','eval') #编译为表达式
In [23]: x,y = 3,4
In [24]: eval(c)
Out[24]: 25
Copier après la connexion
Ce qui précède est le contenu de la compilation de fonctions intégrée de Python. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal