Tot ce trebuie să știți despre Eval în Python



Acest articol vă va oferi o cunoaștere detaliată și cuprinzătoare despre Eval în Python, dezavantajele și utilizările sale cu exemple.

Oriunde te uiți în jurul tău, vei găsi o aplicație special concepută pentru a-ți satisface nevoile. Deși există multe limbaje de programare care pot fi utilizate pentru a dezvolta aceste aplicații, cele mai multe dintre ele sunt construite folosind . Python, împreună cu caracteristicile sale excelente și versatilitatea sporită, aduce la masă oferte unice, care sunt atât puternice, cât și extrem de utile în orice moment. În acest articol Eval în Python vom discuta următoarele puncte:

Ce este Eval în Python?

Funcția eval din Python este una dintre cele mai interesante opțiuni de acolo. Unii îl numesc hack, iar alții îl numesc o comandă rapidă, dar în orice mod îl puteți folosi, pentru a rula un program Python într-un cod Python. Destul de cool nu?





Când utilizați funcția eval, vă îndeamnă practic interpretul să ruleze care este inclus în paranteză funcției eval.

PythonLogo- Eval în PythonSintaxa pentru utilizarea funcției eval în Python este:



structuri de date și algoritmi în tutorialul java

eval (expresie, globals = None, locals = None)

În sintaxa de mai sus,

  1. Expresie: Este șirul sau bucata de cod care este analizată și evaluată ca o expresie Python în cadrul programului Python în sine.



  2. Global: Dicționarul este utilizat pentru a defini toate metodele globale disponibile pentru a executa expresia menționată mai sus. Aceasta este o entitate opțională și utilizările sale depind de nevoia dvs.

  3. Localnici: Similar cu globalii, acesta este un alt dicționar care este folosit pentru a specifica metodele locale disponibile, precum și variabilele.

Pentru a înțelege mai bine utilizarea acestei funcții, aruncați o privire la exemplul de mai jos.

din matematica import * def secret_function (): return 'Cheia secretă este 1234' def function_creator (): # expresie de evaluat expr = raw_input ('Introduceți funcția (în termeni de x):') # variabilă utilizată în expresia x = int (raw_input ('Introduceți valoarea x:')) # evaluarea expresiei y = eval (expr) # tipărirea rezultatului evaluat print ('y = {}'. format (y)) if __name__ == '__main__': function_creator ()

În exemplul de mai sus, function_creator este o funcție care va evalua expresiile matematice create de utilizator atunci când programul este executat.

Ieșire:

Introduceți funcția (în termeni de x): x * (x + 1) * (x + 2)

Introduceți valoarea x: 3

y = 60

Analiză

Acum că ați vizualizat codul partajat mai sus, permiteți-ne să îl analizăm puțin mai departe.

  1. Funcția de mai sus va lua ca intrare orice variabilă din expresia x.

  2. Odată executat, utilizatorul va fi solicitat să introducă o valoare pentru x, numai după care va rezulta generarea programului.

  3. În cele din urmă, programul Python va executa funcția eval analizândexprca argument.

Dezavantaje ale Eval

Similar cu alte funcții încorporate ale Python, și eval vine cu câteva dezavantaje care ar putea crea o problemă dacă nu sunt luate în considerare.

Dacă te uiți la exemplul de mai sus, una dintre principalele vulnerabilități ale funcției, function_creator este că poate expune orice valori ascunse în cadrul programului și, de asemenea, apelează la o funcție dăunătoare, deoarece evalul va executa în mod implicit orice se află în paranteză.

Pentru a înțelege mai departe acest lucru, aruncați o privire la exemplul de mai jos.

tipuri de cadre în seleniu

Intrare de la utilizator

Introduceți funcția (în termeni de x): secret_function ()

Introduceți valoarea x: 0

Ieșire:

y = Cheia secretă este 1234

O altă situație periculoasă care vine odată cu utilizarea funcției eval este importul modulului os. Când ați importat modulul os, acesta permite Python să citească și să scrie orice fișiere prezente pe sistemul dvs. nativ fără autentificare de la utilizator. Într-un astfel de caz, dacă introduceți greșit un singurlinie de cod, toate fișierele dvs. native ar putea fi șterse.

Soluția la toate aceste dezavantaje constă în restricționarea capacităților funcției eval.

Evalarea sigură în Python

Eval implicit vine cu opțiunea de a analiza orice funcție la care are acces sau oricare care a fost deja definită. Ținând cont de acest lucru în timp ce scrieți codul, veți limita capacitățile de evaluare într-o măsură considerabilă, asigurându-vă astfel că nimic nu merge prost.

Pentru a înțelege mai departe acest concept, aruncați o privire la exemplul de mai jos.

din matematica import * def secret_function (): return 'Cheia secretă este 1234' def function_creator (): # expresie de evaluat expr = raw_input ('Introduceți funcția (în termeni de x):') # variabilă utilizată în expresia x = int (raw_input ('Introduceți valoarea x:')) # trecerea variabilei x în dicționarul sigur safe_dict ['x'] = x # expresie de evaluare y = eval (expr, {'__builtins __': None}, safe_dict) # tipărire print rezultat evaluat ('y = {}'. format (y)) if __name__ == '__main__': # listă de metode sigure safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil ',' cos ',' cosh ',' grade ',' e ',' exp ',' fabs ',' floor ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # crearea unui dicționar de metode sigure safe_dict = dict ([(k, locals (). get (k, None)) pentru k în safe_list]) function_creator ()

Intrare de la utilizator

Introduceți funcția (în termeni de x): secret_function ()

Introduceți valoarea x: 0

Ieșire:

NameError: numele „secret_function” nu este definit

După cum puteți vedea limitând accesul la eval, șansele unui rezultat greșit care se poate dovedi a fi dăunător au fost negate.

Utilizări ale Eval

După cum sa explicat în secțiunile de mai sus, din mai multe motive de securitate, evaluarea nu este atât de frecvent utilizată. Dar totuși, există anumite cazuri de utilizare în care utilizarea evalului se dovedește a fi utilă. Unele dintre cele mai semnificative dintre acestea sunt.

  1. Dacă doriți ca utilizatorul să introducă propriile scriptlet-uri pentru a modifica ieșirea programului, atunci utilizarea funcției eval se va dovedi utilă.

  2. În timp ce scrieți expresii pentru a rezolva interogări matematice, puteți utiliza eval, deoarece este mult mai ușor decât scrierea unui analizor de expresie.

Acum, că știți totul despre eval, sperăm că veți folosi același lucru în programarea dvs. de zi cu zi, păstrând în același timp avantajele, precum și dezavantajele.

Cu aceasta, ajungem la sfârșitul acestui articol Eval în Python. Pentru a obține cunoștințe aprofundate despre Python împreună cu diferitele sale aplicații, puteți pentru instruire online live cu asistență 24/7 și acces pe viață.

Ai o întrebare pentru noi? Menționați-le în secțiunea de comentarii din „Eval în Python” și vă vom răspunde.