EVAL |
Évaluation |
---|---|
Python |
Syntaxe
eval(expression[,globals[,locals]]) |
Paramètres
Nom | Description |
---|---|
expression | Ce paramètre permet d'indiquer la chaîne de caractères contenant l'expression à évaluer |
globals | Ce paramètre permet d'indiquer le dictionnaire |
locals | Ce paramètre permet d'indiquer une cartographie d'objet |
Description
Cette fonction permet de retourner le résultat d'une formule mathématique contenu dans une chaîne de caractères.
Algorithme
* Entrée : * expression : une chaîne de caractères contenant une expression Python valide. * globals : un dictionnaire facultatif définissant l'espace global. * locals : un dictionnaire facultatif définissant l'espace local. * * Sortie : * Résultat de l'évaluation de l'expression. MODULE EVAL(expression, globals=None, locals=None) * Vérifier que `expression` est une chaîne de caractères valide. SI `expression` n'est pas une chaîne de caractères valide ALORS Lever une exception TypeError FIN SI SI `globals` ou `locals` sont fournis ALORS Définir l'environnement d'exécution avec `globals` et `locals`. Restreindre ou autoriser les variables et fonctions en fonction de ces environnements. FIN SI Évaluer expression dans le contexte des variables et fonctions définies par `globals` et `locals`. SI erreur d'évaluation ALORS En cas d'erreur de syntaxe ou autre, lever une exception appropriée (comme SyntaxError ou NameError). FIN SI RETOURNE le résultat de l'évaluation |
Remarques
- Les paramètres sont une chaîne de caractères codée Unicode ou Latin-1 et des variables globales et locales optionnelles. Si elle est présente, alors globals doit être un dictionnaire. Si elle est présente, les sections locals peuvent être n'importe quel objet de cartographie.
- A partir de la version 2.4 de Python, les sections locals devaient être un dictionnaire.
- Le paramètre expression est analysé et évalué en tant qu'expression Python (techniquement, une liste de conditions) à l'aide des dictionnaires globals et locals en tant qu'espaces de noms global et local. Si le dictionnaire global est présent et qu'il ne contient pas __builtins__, les global actuels sont copiés dans des global avant que l'expression ne soit analysée. Cette situation signifie qu'expression a normalement un accès complet au module __builtin__ standard et que les environnements restreints sont propagés. Si le dictionnaire de sections locales est omis, il est défini par défaut sur le dictionnaire global. Si les deux dictionnaires sont omis, l'expression est exécutée dans l'environnement où eval() est appelé. La valeur de retour est le résultat de l'expression évaluée. Les erreurs de syntaxe sont signalées comme des exceptions.
- La fonction eval peut également être utilisée pour exécuter des objets de code arbitraires (tels que ceux créés par compile()). Dans ce cas, transmettez un objet code au lieu d'une chaîne de caractères. Si l'objet code a été compilé avec "exec" comme paramètre de mode, la valeur renvoyée par eval() sera None.
- L'exécution dynamique des instructions est prise en charge par l'instruction exec. Ainsi, l'exécution des instructions à partir d'un fichier est prise en charge par la fonction execfile(). Les fonctions globals() et locals() renvoient respectivement les dictionnaires global et local actuels, qu'il peut être utile de faire suivre à eval() ou execfile().
- Vous devriez consulter la fonction ast.literal_eval() si vous souhaitez une fonction pouvant évaluer en toute sécurité des chaînes de caractères avec des expressions contenant uniquement des littéraux.
Exemple
Voici un exemple d'une utilisation typique de cette fonction :
Essayer maintenant ! |
Jusqu'à la version de Python 2 |
---|
on obtiendra le résultat suivant :
eval("777") = 777eval("MaFonction()") = Gladir.com
eval("8*8+1") = 65
Voir également
Langage de programmation - Structure de données - Évaluation d'expression («Infix to Postfix»)
Dernière mise à jour : Mercredi, le 14 septembre 2016