Tout ce que vous devez savoir sur Eval en Python

Cet article vous fournira une connaissance détaillée et complète d'Eval en Python, ses inconvénients et ses utilisations avec des exemples.

Partout où vous regardez autour de vous, vous trouverez une application spécialement conçue pour répondre à vos besoins. Bien qu'il existe de nombreux langages de programmation qui peuvent être utilisés pour développer ces applications, la plupart d'entre eux sont construits en utilisant . Python avec ses excellentes fonctionnalités et sa polyvalence accrue apporte à la table des offres uniques qui sont à la fois puissantes et extrêmement utiles à tout moment. Dans cet article Eval in Python, nous discuterons des points suivants:



Qu'est-ce qu'Eval en Python?

La fonction eval en Python est l'une des options les plus intéressantes. Certains l'appellent un hack et d'autres l'appellent un raccourci, mais dans tous les cas, vous pouvez l'utiliser pour exécuter un programme Python dans un code Python. Assez cool non?



Lorsque vous utilisez la fonction eval, vous incitez essentiellement l'interpréteur à s'exécuter qui est entre crochets de la fonction eval.

PythonLogo- Eval en PythonLa syntaxe pour utiliser la fonction eval en Python est:



eval (expression, globals = None, locaux = None)

Dans la syntaxe ci-dessus,

  1. Expression: C'est la chaîne ou le morceau de code qui est analysé et évalué en tant qu'expression Python dans le programme Python lui-même.



  2. Global: C'est le dictionnaire qui permet de définir toutes les méthodes globales disponibles pour exécuter l'expression mentionnée ci-dessus. Il s'agit d'une entité facultative et ses utilisations dépendent de vos besoins.

  3. Des locaux: Semblable aux globals, il s'agit d'un autre dictionnaire utilisé pour spécifier les méthodes locales disponibles ainsi que les variables.

Pour mieux comprendre l'utilisation de cette fonction, regardez l'exemple ci-dessous.

from math import * def secret_function (): return 'La clé secrète est 1234' def function_creator (): # expression à évaluer expr = raw_input ('Entrez la fonction (en termes de x):') # variable utilisée dans l'expression x = int (raw_input ('Entrez la valeur de x:')) # expression d'évaluation y = eval (expr) # impression du résultat évalué print ('y = {}'. format (y)) if __name__ == '__main__': function_creator ()

Dans l'exemple ci-dessus, function_creator est une fonction qui évaluera les expressions mathématiques créées par l'utilisateur lors de l'exécution du programme.

Production:

Entrez la fonction (en termes de x): x * (x + 1) * (x + 2)

Entrez la valeur de x: 3

y = 60

Une analyse

Maintenant que vous avez vu le code partagé ci-dessus, analysons-le un peu plus loin.

  1. La fonction ci-dessus prendra n'importe quelle variable de l'expression x comme entrée.

  2. Une fois exécuté, l'utilisateur sera invité à entrer une valeur pour x, seulement après quoi le programme sera généré.

  3. Enfin, le programme Python exécutera la fonction eval en analysant leexprcomme argument.

Inconvénients d'Eval

Semblable à d'autres fonctions intégrées de Python, eval présente également quelques inconvénients qui pourraient créer un problème s'il n'est pas pris en compte.

Si vous regardez l'exemple ci-dessus, l'une des principales vulnérabilités de la fonction, function_creator, est qu'elle peut exposer toutes les valeurs cachées dans le programme et également appeler une fonction nuisible car eval par défaut exécutera tout ce qui se trouve entre ses parenthèses.

Pour mieux comprendre cela, jetez un œil à l'exemple ci-dessous.

Entrée de l'utilisateur

Entrez la fonction (en termes de x): secret_function ()

Entrez la valeur de x: 0

instructions if dans les requêtes SQL

Production:

y = La clé secrète est 1234

Une autre situation dangereuse associée à l'utilisation de la fonction eval est d'importer le module os. Lorsque vous avez importé le module os, il permet à Python de lire et d'écrire tous les fichiers présents sur votre système natif sans authentification de l'utilisateur. Dans un tel cas, si vous avez mal tapé un seul ligne de code, tous vos fichiers natifs peuvent être supprimés.

La solution à tous ces inconvénients réside dans la limitation des capacités de la fonction eval.

Rendre Eval Safe en Python

Eval est livré par défaut avec la possibilité d'analyser toute fonction à laquelle il a accès ou qui a déjà été définie. Garder cela à l'esprit lors de l'écriture de votre code, limitera les capacités d'eval dans une mesure considérable, garantissant ainsi que rien ne va pas.

Pour mieux comprendre ce concept, jetez un œil à l'exemple ci-dessous.

from math import * def secret_function (): return 'La clé secrète est 1234' def function_creator (): # expression à évaluer expr = raw_input ('Entrez la fonction (en termes de x):') # variable utilisée dans l'expression x = int (raw_input ('Entrez la valeur de x:')) # passant la variable x dans le dictionnaire sécurisé safe_dict ['x'] = x # évaluation de l'expression y = eval (expr, {'__builtins __': None}, safe_dict) # printing résultat évalué print ('y = {}'. format (y)) if __name__ == '__main__': # liste des méthodes sûres safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil ',' cos ',' cosh ',' degrés ',' e ',' exp ',' fabs ',' floor ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # création d'un dictionnaire de méthodes sûres safe_dict = dict ([(k, locals (). get (k, None)) pour k dans safe_list]) function_creator ()

Entrée de l'utilisateur

Entrez la fonction (en termes de x): secret_function ()

Entrez la valeur de x: 0

Production:

NameError: le nom 'secret_function' n'est pas défini

Comme vous pouvez le voir en limitant l'accès à eval, les chances d'une sortie erronée qui peut s'avérer nuisible ont été annulées.

Utilisations d'Eval

Comme expliqué dans les sections ci-dessus, pour plusieurs raisons de sécurité, eval n'est pas si couramment utilisé. Mais encore, il existe des cas d'utilisation particuliers où l'utilisation de eval s'avère utile. Certains des plus importants sont.

  1. Si vous voulez que l'utilisateur entre ses propres scriptlets pour modifier la sortie du programme, l'utilisation de la fonction eval s'avérera utile.

  2. Lors de l'écriture d'expressions pour résoudre des requêtes mathématiques, vous pouvez utiliser eval car c'est beaucoup plus facile que d'écrire un analyseur d'expression.

Maintenant que vous savez tout sur eval, nous espérons que vous en profiterez dans votre programmation quotidienne tout en gardant à l'esprit les avantages et les inconvénients.

Avec cela, nous arrivons à la fin de cet article Eval in Python. Pour acquérir des connaissances approfondies sur Python et ses différentes applications, vous pouvez pour une formation en ligne en direct avec une assistance 24/7 et un accès à vie.

Vous avez une question pour nous? Mentionnez-les dans la section commentaires de «Eval in Python» et nous vous répondrons.