Maison > développement back-end > Tutoriel Python > Eval vs Exec vs Compile en Python : quelle est la différence ?

Eval vs Exec vs Compile en Python : quelle est la différence ?

DDD
Libérer: 2024-12-19 08:08:13
original
781 Les gens l'ont consulté

Eval vs. Exec vs. Compile in Python: What's the Difference?

Eval, Exec et Compile : une analyse comparative

Différences de fonctionnalité

Eval évalue une expression unique de manière dynamique et renvoie le résultat.
Exec exécute un bloc de code donné et supprime sa valeur de retour, principalement utilisée pour ses effets secondaires.

Compile et modes

La compilation joue un rôle crucial à la fois dans eval et exec :

  • Mode 'eval' : Compile une seule expression en bytecode qui renvoie la valeur évaluée value.
  • mode 'exec' : Compile des fragments de code de tout type en bytecode qui renvoie Aucun (dans Python 2, c'était une instruction et n'a rien renvoyé).

Syntaxe et différences

Python 2

  • Exec est une instruction.
  • Eval est une fonction.
  • Exec accepte un tuple de longueur 2 ou 3 pour définir les globaux et les locaux ( un hack pour la compatibilité ascendante).

Python 3

  • Exec est une fonction.
  • Exec et eval se comportent de manière identique lorsqu'un objet code est transmis.

Comparaison détaillée

Évaluer Expressions :

  • Exec n'accepte pas les expressions directement.
  • Eval n'accepte que les expressions uniques sous forme de chaînes ou d'objets de code.

Effets secondaires :

  • Exec est utilisé uniquement pour les effets secondaires tels que les modifications de variables ou les fonctions. appels.
  • Eval n'a aucun effet secondaire, renvoyant la valeur de l'expression évaluée.

Déclarations et blocs de code :

  • Exec accepte les blocs de code contenant des instructions, des boucles et des importations.
  • Eval ne peut pas gérer directement les instructions ; il nécessite des objets de code compilés pour les instructions.

Exemple d'utilisation

Calcul et impression :

a = 5
result = eval('37 + a')   # Eval calculates the expression and returns the result (42)
exec('print(37 + a)')     # Exec executes the code (prints 42)
Copier après la connexion

Modification des variables :

a = 2
exec('a = 47')            # Exec modifies the global variable `a`
result = eval('a = 47')     # Eval throws an error because it cannot handle statements
Copier après la connexion

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!

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