Alt hvad du behøver at vide om Eval i Python



Denne artikel vil give dig en detaljeret og omfattende viden om Eval i Python, det er ulemper og anvendelser med eksempler.

Overalt hvor du ser dig omkring, finder du et program, der er specielt bygget til at opfylde dine behov. Selv om der er mange programmeringssprog, der kan bruges til at udvikle disse applikationer, er de fleste af dem bygget ved hjælp af . Python sammen med sine fantastiske funktioner og øget alsidighed bringer unikke tilbud til bordet, som er både kraftfulde og yderst nyttige til enhver tid. I denne Eval in Python-artikel vil vi diskutere følgende punkter:

Hvad er Eval i Python?

Eval-funktionen i Python er en af ​​de mest interessante muligheder derude. Nogle kalder det et hack, og andre kalder det en genvej, men på begge måder kan du bruge det til at køre et Python-program inden for en Python-kode. Temmelig sej, ikke?





c ++ stl sorter

Når du bruger eval-funktionen, opfordrer du dybest set tolk til at køre, der er lukket inden for beslaget til eval-funktionen.

PythonLogo- Eval i PythonSyntaksen for brug af eval-funktionen i Python er:



eval (udtryk, globaler = ingen, lokale = ingen)

I ovenstående syntaks,

  1. Udtryk: Det er strengen eller kodestykket, der parses og evalueres som et Python-udtryk i selve Python-programmet.



  2. Global: Det er ordbogen, der bruges til at definere alle de tilgængelige globale metoder til at udføre ovennævnte udtryk. Dette er en valgfri enhed, og dens anvendelser afhænger af dit behov.

  3. Lokalbefolkningen: I lighed med globaler er dette en anden ordbog, der bruges til at specificere de tilgængelige lokale metoder såvel som variabler.

For at forstå brugen af ​​denne funktion bedre, se eksemplet nedenfor.

fra matematisk import * def secret_function (): return 'Secret key is 1234' def function_creator (): # expression to be evaluated expr = raw_input ('Enter the function (in terms of x):') # variabel brugt i udtryk x = int (raw_input ('Indtast værdien af ​​x:')) # evalueringsudtryk y = eval (expr) # udskrivning evalueret resultatudskrivning ('y = {}'. format (y)) hvis __name__ == '__main__': function_creator ()

I ovenstående eksempel er function_creator en funktion, der evaluerer de matematiske udtryk, der oprettes af brugeren, når programmet udføres.

Produktion:

Indtast funktionen (udtrykt som x): x * (x + 1) * (x + 2)

Indtast værdien af ​​x: 3

y = 60

Analyse

Nu hvor du har set den delte kode ovenfor, lad os analysere den lidt nærmere.

  1. Ovenstående funktion tager enhver variabel i udtrykket x som sin input.

  2. Når den er udført, bliver brugeren bedt om at indtaste en værdi for x, hvorefter resultatet vil blive genereret for programmet.

  3. Endelig udfører Python-programmet eval-funktionen ved at analysereeksprsom et argument.

Ulemper ved Eval

I lighed med andre indbyggede funktioner i Python kommer eval også med nogle få ulemper, der kan skabe et problem, hvis de ikke tages i betragtning.

Hvis du ser på ovenstående eksempel, en af ​​de vigtigste sårbarheder i funktionen, function_creator er, at den kan eksponere eventuelle skjulte værdier i programmet og også opfordre til en skadelig funktion som eval som standard vil udføre alt, hvad der ligger inden for dets parentes.

For at forstå dette yderligere skal du kigge på eksemplet nedenfor.

Input fra bruger

Indtast funktionen (i form af x): secret_function ()

Indtast værdien af ​​x: 0

Produktion:

forskel mellem git og github

y = Hemmelig nøgle er 1234

En anden farlig situation, der følger med at bruge eval-funktionen, er at importere OS-modulet. Når du har importeret os-modulet, giver det Python mulighed for at læse og skrive alle filer, der findes på dit oprindelige system uden godkendelse fra brugeren. I et sådant tilfælde, hvis du fejlagtigt skriver en enkeltkode kode, bliver alle dine oprindelige filer muligvis slettet.

Løsningen på alle disse ulemper ligger i at begrænse eval-funktionens muligheder.

Gør Eval sikker i Python

Eval leveres som standard med muligheden for at parsere enhver funktion, som den har adgang til, eller enhver, der allerede er defineret. Når du holder dette i tankerne, mens du skriver din kode, begrænses evalens evner i betydelig grad og sikrer dig, at intet går galt.

For at forstå dette koncept yderligere skal du se på eksemplet nedenfor.

fra matematisk import * def secret_function (): return 'Secret key is 1234' def function_creator (): # expression to be evaluated expr = raw_input ('Enter the function (in terms of x):') # variabel brugt i udtryk x = int (raw_input ('Indtast værdien af ​​x:')) # passerende variabel x i sikker ordbog safe_dict ['x'] = x # evalueringsudtryk y = eval (expr, {'__builtins __': Ingen}, safe_dict) # udskrivning evalueret resultatudskrivning ('y = {}'. format (y)) hvis __navn__ == '__main__': # liste over sikre metoder safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil ',' cos ',' cosh ',' grader ',' e ',' exp ',' fabs ',' gulv ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radianer', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # skaber en ordbog med sikre metoder safe_dict = dict ([(k, locals (). get (k, None)) for k i safe_list]) function_creator ()

Input fra bruger

Indtast funktionen (i form af x): secret_function ()

Indtast værdien af ​​x: 0

Produktion:

NameError: navn 'secret_function' er ikke defineret

Som du kan se ved at begrænse adgangen til eval, er chancerne for en forkert output, der kan vise sig at være skadelig, blevet negeret.

hvad er fabrik i angularjs

Anvendelse af Eval

Som forklaret i ovenstående afsnit, er eval af forskellige sikkerhedsmæssige årsager ikke så almindeligt anvendt. Men der er stadig særlige brugstilfælde, hvor brug af eval viser sig at være nyttigt. Nogle af de mest betydningsfulde af disse er.

  1. Hvis du vil have brugeren til at indtaste deres egne scriptlets for at ændre output fra programmet, vil det være nyttigt at bruge eval-funktionen.

  2. Mens du skriver udtryk for at løse matematiske forespørgsler, kan du gøre brug af eval, da det er meget lettere end at skrive en udtryksparser.

Nu hvor du ved alt om eval, håber vi, at du vil gøre brug af det samme i din daglige programmering, mens du husker både fordelene og ulemperne.

Med dette kommer vi til slutningen af ​​denne Eval in Python-artikel. For at få dybdegående viden om Python sammen med dens forskellige applikationer kan du til live online træning med support døgnet rundt og levetid adgang.

Har du et spørgsmål til os? Nævn dem i kommentarfeltet i “Eval i Python”, så vender vi tilbage til dig.